Fraktal Kopma-Sıkışmış - sayfa 4

 
for ( int i= OrdersTotal ()- 1 ; i>= 0 ;i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false )   break ;


if (OrderMagicNumber()!=MagicNumber || OrderSymbol() != Symbol ()) continue ;

double SL=OrderStopLoss();
bool result;
int   error;
//-----The Differnt Order types---//

if (OrderType()==OP_BUY)
{
 if (BreakEven> 0 )
    {
     if (Bid-OrderOpenPrice() >= Point *BreakEven*mypoint)
      {
       if (OrderStopLoss() <OrderOpenPrice())
         {
          SL=OrderOpenPrice()* Point *mypoint;
          }}}}}

if (SL!=OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(), SL,OrderTakeProfit(), 0 , CLR_NONE );
if (result!= true ){error= GetLastError (); Print ( "ModifyError=" ,OrderTicket(), " " ,error);}

//--------CHECKING FOR ERRORS-------------------//

return ( 0 );
}
}



Satış tarafını da oluşturdum, ancak hatalar aldığım için sildim, bu yüzden deVries'in bana gösterdiğini geri koydum, hala aynı hata kodlarını alıyorum.


4051

4108


Ayrıca, Point'i OrderOpenPrice()=SL öğesine neden ekledik? Bu sadece stoploss'a doğru rakamları ekler.

 
ZacharyRC :

Satış tarafını da yarattım, ancak hatalar aldığım için sildim, bu yüzden deVries'in bana gösterdiğini geri koydum, hala aynı hata kodlarını alıyorum.

 for ( int i= OrdersTotal ()- 1 ; i>= 0 ;i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false )   break ;


if (OrderMagicNumber()!=MagicNumber || OrderSymbol() != Symbol ()) continue ;

double SL=OrderStopLoss();
bool result;
int   error;
//-----The Differnt Order types---//

if (OrderType()==OP_BUY)
{
 if (BreakEven> 0 )
    {
     if (Bid-OrderOpenPrice() >= Point *BreakEven*mypoint)
      {
       if (OrderStopLoss() <OrderOpenPrice())
         {
           SL=OrderOpenPrice()* Point *mypoint;       // WRONG HERE
          }}}} }

if (SL!=OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(), SL,OrderTakeProfit(), 0 , CLR_NONE );
if (result!= true ){error= GetLastError (); Print ( "ModifyError=" ,OrderTicket(), " " ,error);}
     //Where is the  }  ??
//--------CHECKING FOR ERRORS-------------------//

return ( 0 );
}
}

4051

4108


Ayrıca, Point'i OrderOpenPrice()=SL öğesine neden ekledik? Bu sadece stoploss'a doğru rakamları ekler.

Koduma tekrar bak ve o Kırmızı çizgiyi değiştir

benim verdiğimden farklı !!!!

Kodu şimdi nasıl olduğunu görebilir miyiz

ve bu hataları vererek okuduğunuz mesaj

orderopenprice'a bir nokta eklemek, her tikte başabaşta ticareti yeniden değiştirmeye çalışmaktan kaçınmaktır

 
deVries :

Koduma tekrar bak ve o Kırmızı çizgiyi değiştir

benim verdiğimden farklı !!!!

Kodu şimdi nasıl olduğunu görebilir miyiz

ve bu hataları vererek okuduğunuz mesaj

orderopenprice'a bir nokta eklemek, her tikte başabaşta ticareti yeniden değiştirmeye çalışmaktan kaçınmaktır


Evet, bu hatayı aldım, sadece bazı şeyleri değiştiriyordum ve kodu göndermeden önce bunu silmeyi unuttum. Özür dilerim.


 //-----------------EXITING ORDERS---------------//

for ( int i= OrdersTotal ()- 1 ; i>= 0 ;i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false )   break ;


if (OrderMagicNumber()!=MagicNumber || OrderSymbol() != Symbol ()) continue ;

double SL=OrderStopLoss();
bool result;
int   error;
//-----The Differnt Order types---//

if (OrderType()==OP_BUY)
{
 if (BreakEven> 0 )
    {
     if (Bid-OrderOpenPrice() >= Point *BreakEven*mypoint)
      {
       if (OrderStopLoss() <OrderOpenPrice())
         {
          SL=OrderOpenPrice()+ Point ;
          }}}}}
          

if (OrderType()==OP_SELL)
{
 if (OrderOpenPrice()-Ask >= Point *BreakEven*mypoint)
 {
   if (OrderStopLoss()>OrderOpenPrice())
   {
    SL=OrderOpenPrice() + Point ;
    
}}}


if (SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(), 0 , CLR_NONE );
         if (result!=TRUE) { error= GetLastError (); Print ( "ModifyError = " ,OrderTicket(), "   " ,error);}     
//--------CHECKING FOR ERRORS-------------------//
Print ( GetLastError ());
return ( 0 );
}
}
 
2013.03.18 17:55:51 2013.03.11 23:59 Test kullanıcısı: 6 numaralı sipariş kapatıldı
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: 0
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: ModifyError = 6 0
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: #6'yı değiştir 0.03 EURUSD'yi 1.30390 sl'de: 1.30055 tp: 1.30855 tamam
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: açık #6 1.30390'da 0.03 EURUSD satın al
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: 0
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: ModifyError = 5 4108
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: OrderModify hatası 4108
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: OrderModify işlevi için bilinmeyen bilet 5
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: 0
 
Tamam! Yani bir satış için ben de eksi 1 puan almalıyım
 
//-----------------EXITING ORDERS---------------//

for ( int i= OrdersTotal ()- 1 ; i>= 0 ;i--)
   {
   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false )   break ;
   if (OrderMagicNumber()!=MagicNumber || OrderSymbol() != Symbol ()) continue ;
   double SL=OrderStopLoss();
   bool result;
   int   error;
   //-----The Differnt Order types---//
   if (OrderType()==OP_BUY)
      {
      if (BreakEven> 0 )
         {
         if (Bid-OrderOpenPrice() >= Point *BreakEven*mypoint)
            {
            if (OrderStopLoss() <OrderOpenPrice())
               {
               SL=OrderOpenPrice()+ Point ;
               }}}}   }     //PLACE THE BRACKETS IN LINE OPEN/CLOSE BRACKET AND YOU WILL SEE THE ERROR HERE
          

   if (OrderType()==OP_SELL)
      {
      if (OrderOpenPrice()-Ask >= Point *BreakEven*mypoint)
         {
          if (OrderStopLoss()>OrderOpenPrice())
            {
            SL=OrderOpenPrice() + Point ;      //OrderStopLoss has to become point lower then orderopenprice
            }}}


   if (SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(), 0 , CLR_NONE );
         if (result!=TRUE) { error= GetLastError (); Print ( "ModifyError = " ,OrderTicket(), "   " ,error);} 
   }    
//--------CHECKING FOR ERRORS-------------------//
Print ( GetLastError (
return ( 0 );
}
}

Döngünün içinde, bu durumda son sipariş hatasının ne olduğunu bilmediğimiz döngü dışında olmayan her değişikliği hata için kontrol ederiz.

son satır print( getlasterror()) b gerekli değil

Parantezleri bir satırda daha çok görmeyi seviyorum

RaptorUK ve ben bu şekilde kapanış parantezleri koymadık }}}}}}

şimdi bu yüzden hata yaptın

 
for ( int i= OrdersTotal ()- 1 ; i>= 0 ;i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false )   break ;


if (OrderMagicNumber()!=MagicNumber || OrderSymbol() != Symbol ()) continue ;

double SL=OrderStopLoss();
bool result;
int   error;
//-----The Differnt Order types---//

if (OrderType()==OP_BUY)
{
 if (BreakEven> 0 )
   {
     if (Bid-OrderOpenPrice() >= Point *BreakEven*mypoint)
      {
       if (OrderStopLoss() <OrderOpenPrice())
         {
          SL=OrderOpenPrice()+ Point ;
}
   }
      }
         }
                  
          

if (OrderType()==OP_SELL)
{
 if (OrderOpenPrice()-Ask >= Point *BreakEven*mypoint)
 {
   if (OrderStopLoss()>OrderOpenPrice())
   {
    SL=OrderOpenPrice() - Point ;
    
}
 }
   }


if (SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(), 0 , CLR_NONE );
         if (result!=TRUE) { error= GetLastError (); Print ( "ModifyError = " ,OrderTicket(), "   " ,error);}     
}
return ( 0 );
}
}




{{{ }}} açma ve kapama parantezleri için talep ettiğiniz sıra bu mu?

Bu benim için bir sorun oldu, kodun içinde kendimi çok dağınık hissediyorum.

 

Şu anda hata yok, ancak görsel geriye dönük testte SL taşınmıyor. Buna güveniyordum ama şimdi canım yanıyor, mesaj panosuna bu kadar bağlı olduğum için özür dilerim.

Parantezler hataydı ama yine de düzgün çalışmıyor.



Ben de kitabı yeniden okudum.

 
if (OrderType()==OP_BUY){

 if (BreakEven> 0 ){
   
     if (Bid-OrderOpenPrice() >=BreakEven*mypoint* Point ){
      
       if (OrderStopLoss() <OrderOpenPrice()){
         
          SL=OrderOpenPrice()+ Point ;
}
  }
     }
       }
                  

Parantezleri doğrudan operatörün altına yerleştirmenin de bana yardımcı olacağını düşünüyorum.
 
ZacharyRC :
Parantezleri doğrudan operatörün altına yerleştirmenin de bana yardımcı olacağını düşünüyorum.

Bana korkunç görünüyor, ama sana mantıklı geliyorsa harika. Bunu böyle yapıyorum, böylece girintiler bir bloğun nerede olduğunu gösteriyor. . .

 if (OrderType()==OP_BUY)
   {
   if (BreakEven> 0 )
      {
       if (Bid-OrderOpenPrice() >=BreakEven*mypoint* Point )
         {
         if (OrderStopLoss() <OrderOpenPrice())
            {
            SL=OrderOpenPrice()+ Point ;
            }
         }
      }
   }

yada şöyle yapın. . .

 if (OrderType() == OP_BUY && BreakEven > 0 && 
   Bid - OrderOpenPrice() >= BreakEven * mypoint * Point &&
   OrderStopLoss() < OrderOpenPrice() )
   {
   SL = OrderOpenPrice() + Point ;
   }
Neden: