[EA] zlecenie po weryfikacji Magicnumber

O jezykach programowania w platformach i nie tylko.
poxter
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 26 gru 2007, 20:57

[EA] zlecenie po weryfikacji Magicnumber

Nieprzeczytany post autor: poxter »

Dobry ludziska
napotkałem na problem z którym się borykam już od kilku godzin i rozwiązanie nie chce się nasunąć

Zalożenie -EA ma zająć pozycję gdy OrderTotal =0 lub gdy >1 lecz brak pozycji z określonym MagicNumber

Ni chuchu mi nie wchodzi żadna pozycja

Kod: Zaznacz cały

 total=0;
if(OrdersTotal()>=0)
{
  for(i=0; i<=OrdersTotal(); i++)          
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
        {
          if(OrderMagicNumber()==15) total++; continue;
//jeśli nie ma otwartej pozycji, lub są ale po MagicNumerze nie ma to kupuje          
          if(total==0)
//warunek kupna     
      if(iopen1<iclose1)
      {
      ticket=OrderSend("EURUSD",OP_BUY,0.1,ASK,Slippage,0,0,15,15,15,Green);
      return(0); 
      }
//warunek sprzedaży      
      if(iopen1>iclose1)
      {
      ticket=OrderSend("EURUSD",OP_SELL,0.1,BID,Slippage,0,0,15,15,15,Red);
      return(0); 
      }
      }
     }
lub próbuje w ten deseń choć praktycznie to samo

Kod: Zaznacz cały

   int total=0;
   for(int m=0;m<OrdersTotal();m++)
     {
      bool select=OrderSelect(m,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber()==15) 
      total+=1; 
       if(total<1) 
      { 
      // check for long position (BUY) possibility
      if(iopen1<iclose1)
      {
      ticket=OrderSend("EURUSD",OP_BUY,0.1,Ask,Slippage,0,0,15,15,15,Green);
      return(0); 
      }
      // check for short position (SELL) possibility
      if(iopen1>iclose1)
      {
      ticket=OrderSend("EURUSD",OP_SELL,0.1,Bid,Slippage,0,0,15,15,15,Red);
      return(0); 
      }
      }
      }

Awatar użytkownika
Mustafa
Pasjonat
Pasjonat
Posty: 769
Rejestracja: 20 lip 2010, 10:54

Re: [EA] zlecenie po weryfikacji Magicnumber

Nieprzeczytany post autor: Mustafa »

Użyłeś continue bez if'a więc uwala resztę kodu i przechodzi do następnego obrotu pętli. Poza tym przelicz w pętli ile masz zleceń i dopiero poza pętlą otwierasz pozycje. Błąd logiczny polega na tym, że po każdym obrocie pętli program będzie sprawdzał i próbował otwierać pozycje, a warunek total==0 będzie sprawdzony dopiero po przejściu przez całą pętlę.

Kod: Zaznacz cały

int  total = 0;
int ot = OrdersTotal();

for(int i = 0 ; i < ot; i ++)
{ 
   if(OrderSelect (i, SELECT_BY_POS) == true)
   {
       if(OrderMagicNumber()==15) 
       {
            total++;
            break;// break może być opcjonalnie jeżeli nie potrzeba zliczać wszystkich MagicNumber
       }
   }
}

if(total==0)
{

}
Nie chodzi o to czy masz rację czy nie, tylko o to, co robisz kiedy masz rację lub jak się zachowujesz jeżeli racji nie masz.

poxter
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 26 gru 2007, 20:57

Re: [EA] zlecenie po weryfikacji Magicnumber

Nieprzeczytany post autor: poxter »

Wielkie dzięki !!

ODPOWIEDZ