OrderModyfi

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

OrderModyfi

Nieprzeczytany post autor: bucho1504 »

Witam
Mam mały problem nie wiem dlaczego raz działa Mi funkcja prawidłowo a raz nie :(

Kod: Zaznacz cały

void Modyfikacja_Zlecen ()
{
bool Result;

    double pips ;
     double TickSize = MarketInfo(Symbol(),MODE_POINT);
     if(TickSize ==0.00001)
      pips = TickSize * 10;
      else pips= TickSize; 
      
 double UPPER = NormalizeDouble(High[iHighest(OrderSymbol(),1440,MODE_HIGH,7,1)],Digits);
 double TP_BUY = NormalizeDouble(UPPER + (PIPS * pips),Digits);
 double SL_SELL = UPPER;
 
 double LOWER = NormalizeDouble(Low[iLowest(OrderSymbol(),1440,MODE_LOW,7,1)],Digits);
 double TP_SELL = NormalizeDouble(LOWER - (PIPS * pips),Digits);
 double SL_BUY = LOWER;
 
 RefreshRates();

 for (int i = OrdersTotal()-1 ; i >=0 ; i--)
      {                                   
         if (OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES)==true)
              
            //--------------- Modyfikacja Zlecenia SELL ---------------//                 
             {
              if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() )
               {
               if (OrderMagicNumber() != 24 && OrderMagicNumber() != 26)                                  
                {
                if (OrderOpenPrice() != LOWER )
               Result = (OrderModify(OrderTicket(),LOWER,SL_SELL,TP_SELL,OrderExpiration(), Gold));
               if (Result == false)
               Print("Modyfikacja_Zlecen error - ",(GetLastError()));
              
               }
              }               
             }
                                                                  
       //---------------- Modyfikacja Zlecenia BUY ----------------//                                        
        {
         if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() )
         {
         if (OrderMagicNumber() != 23 && OrderMagicNumber() != 25) 
          {
           if (OrderOpenPrice() != UPPER )
           Result = (OrderModify(OrderTicket(),UPPER,SL_BUY,TP_BUY,OrderExpiration(), Gold)); 
           if (Result == false)
           Print("Modyfikacja_Zlecen error - ",(GetLastError()));
         
           } 
          }    
         }                 
     }     
}
Gzie popełniłem błąd ?
Przede wszystkim źle wprowadza Mi cenę otwarcia zlecenia oczekującego , nie wybiera najwyższej tylko przypadkową :(
Ten nie popełnia błędów kto nic nie robi

z6yszko
Gaduła
Gaduła
Posty: 266
Rejestracja: 17 sty 2011, 10:09

Re: OrderModyfi

Nieprzeczytany post autor: z6yszko »

Szkoda że nie napisałeś jaki błąd pokazuje się w logu.
Wysłałeś tylko kod funkcji, więc sporo niewiadomych - np. co to jest PIPS
Jeśli tę zmienną masz zdefiniowaną na int, to wynik PIPS*pips może się źle przeliczać. Najlepiej żeby PIPS było double.
Jeśli w logu masz error 130, to sprawdź w specyfikacji symbolu, jaki masz poziom zleceń stop (albo StopOut level).
Jeśli jest większy od zera, to broker wymaga, żeby zlecenia oczekujące ustawiać minimalnie w takiej odległości.

Przede wszystkim zacznij od sprawdzenia numeru błędu w logach i od PIPS.

ODPOWIEDZ