İzleyen Duraklar ve İzleyen Kar - sayfa 6

 
deVries :


OrderComment, komisyoncunuz tarafından üzerine yazılabilir

istiyorsun... Şimdi, benim şartıma göre, fiyat kârda 7 pip [103.603] olarak söylendiğinde, Zarar Durdur

1. ve 2. işlem 1 pip kâr [103.543] olacak ve 3. işlemin Zarar Durdurma değeri 103.386'da kalacak.

extern int BreakEven = 7 yap

(* 10 ) pip değeri elde etmek için 5 haneli brokerde düzeltme


ohh, Evet, bu kesinlikle bir Eksikliktir. Akşamdan beri bütün emeklerim şimdi boşa gitti!

' Sipariş yorumu ' işlevine bağlı olarak işlemleri ayırt etmenin bir yolunu denedi ve bir kod yazdı.

Her neyse, verdiğiniz kodunuz Stop Loss bölümünün BE'ye veya istenen noktaya taşınmasını yapacak ama yine de 'Üçüncü' ticaretle ilgili sorunum çözülmüyor.

Ayrıca kodun bu BE hareketli parçasına sahibim ama üçüncü ticaret için Hareketsiz SL'ye takıldım.

Başka bir fikrim var, şimdi deniyorum.

Ve bu Geçerli miydi?

string comment_sell="Sipariş Sat";

SellOrder=OrderSend(Symbol(), iOrderType_Sell, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice, comment_sell ,MagicNumber, 0,Red);

if (OrderComment()=="comment_sell") // ?

 

Bu Geçerli mi?

EA'yı EURUSD grafiğine eklediğimi varsayalım.

if (Order_Symbol()==EURUSD)

Mevcut grafiğin EURUSD olup olmadığını karşılaştıracak mı?

 

Yine de 'Sihirli Sayı' I aracılığıyla siparişleri ayırt etmenin bir yolu.

Braketler Dengeli Değildir.

Mümkün mü?

 if (Order_Symbol==EURUSD) 
{ 
int Magic_Number_3= 1303
int Magic_Number_2= 1302
int Magic_Number_1= 1301
}
if (Order_Symbol==GBPUSD) 
{ 
int Magic_Number_3= 1603
int Magic_Number_2= 1602
int Magic_Number_1= 1601
}
if (Order_Symbol==GBPUSD) 
{ 
int Magic_Number_3= 8703
int Magic_Number_2= 8702
int Magic_Number_1= 8701
}


 if (count== 3 ) 
    {
    BuyOrder_1= OrderSend ( "EURUSD" , iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, NULL ,Magic_Number_3, 0 ,Blue);
     if (BuyOrder_1> 0 ) //Checking if the order was opened or not
      { 
       sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Buy order 1 sent successfully. Ticket=" + BuyOrder_1;
        count = count - 1 ; 
      }
       else 
         {
          iLastError = GetLastError();                               
           sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending buy order 1. Error code=" + ErrorDescription(iLastError);
         } 
        }

   if (count== 2 ) 
    {
     BuyOrder_2= OrderSend ( "EURUSD" , iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_2, NULL ,Magic_Number_2, 0 ,Blue);
       if (BuyOrder_2> 0 ) 
      { 
      sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Buy order 2 sent successfully. Ticket=" + BuyOrder_2;
       count = count - 1 ; 
      }
     else {
          iLastError = GetLastError();
           sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending buy order 2. Error code=" + ErrorDescription(iLastError);
          } 
         }

if (count== 1 ) 
    {
     BuyOrder_3= OrderSend (EURUSD, iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_3, NULL ,Magic_Number_1, 0 ,Blue);
       if (BuyOrder_3> 0 ) 
      {
       sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Buy order 2 sent successfully. Ticket=" + BuyOrder_3;
        count = count - 1 ; 
      }
     else {
           iLastError = GetLastError();                               
            sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending buy order 2. Error code=" + ErrorDescription(iLastError);
          }  
         }

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

for (cnt= OrdersTotal ()- 1 ;cnt>= 0 ;cnt--)

                       { 

                             if (! OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES )) continue ;

                               if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==  Magic_Number_3)

                                                      {

                                                          sl     = OrderStopLoss (); // Stop Loss. 

                                                            tStopLoss = NormalizeDouble ( OrderStopLoss (), Digits ); // Stop Loss. 

                   if ( OrderType ()== OP_BUY )

                                                  {

                                                     if ( Ask > NormalizeDouble ( OrderOpenPrice ()+TrailingStart* vPoint, Digits )

                                                           && tStopLoss < NormalizeDouble ( Bid -(TrailingStop+TrailingStep)*vPoint, Digits ))

                                                            {

                                                                tStopLoss = NormalizeDouble ( Bid -TrailingStop*vPoint, Digits );                            

                                                                  ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),tStopLoss, OrderTakeProfit (), 0 ,Blue);

                                 if (ticket > 0 )

                                                   {

                                                       Print ( "TrailingStop #2 Activated: " , OrderSymbol (), ": SL" , tStopLoss, ": Bid" , Bid );                            

                                                   }

                                                 else {

                                                     iLastError = GetLastError();

                                                      }

                                                   } //end if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits) && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

                                                 } //end if(OrderType()==OP_BUY){ 

 

                               if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==  Magic_Number_2)

                                                      {

                                                          sl     = OrderStopLoss (); // Stop Loss. 

                                                            tStopLoss = NormalizeDouble ( OrderStopLoss (), Digits ); // Stop Loss. 

                   if ( OrderType ()== OP_BUY )

                                                  {

                                                     if ( Ask > NormalizeDouble ( OrderOpenPrice ()+TrailingStart* vPoint, Digits )

                                                           && tStopLoss < NormalizeDouble ( Bid -(TrailingStop+TrailingStep)*vPoint, Digits ))

                                                            {

                                                                tStopLoss = NormalizeDouble ( Bid -TrailingStop*vPoint, Digits );                            

                                                                  ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),tStopLoss, OrderTakeProfit (), 0 ,Blue);

                                 if (ticket > 0 )

                                                   {

                                                       Print ( "TrailingStop #2 Activated: " , OrderSymbol (), ": SL" , tStopLoss, ": Bid" , Bid );                            

                                                   }

                                                 else {

                                                     iLastError = GetLastError();

                                                      }

                                                   } //end if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits) && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

                                                 } //end if(OrderType()==OP_BUY){  

 

                               if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==  Magic_Number_1)

                                                      {

                                                          sl     = OrderStopLoss (); // Stop Loss. 

                                                            tStopLoss = NormalizeDouble ( OrderStopLoss (), Digits ); // Stop Loss. 

                   if ( OrderType ()== OP_BUY )

                                                  {

                                                                          ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),tStopLoss, OrderTakeProfit (), 0 ,Blue);

                                 if (ticket > 0 )

                                                   {

                                                       Print ( "Stop Loss Unchanged" );                            

                                                   }

                                                 else {

                                                     iLastError = GetLastError();

                                                      }

                                                   } //end if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits) && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

                                                 } //end if(OrderType()==OP_BUY){

 
if (Order_Symbol== "EURUSD" ) //it has to be a string if you do it this way
{                               //==EURUSD)  fails
int Magic_Number_3= 1303
int Magic_Number_2= 1302
int Magic_Number_1= 1301
}

bu şekilde 3 farklı sihirli sayı aramanız gerekir.

bana yapmak mümkün görünüyor

 

Tamam, bir Sürekli Çalışkan Büyünün ardından (en azından benim için), EA'yı 'Hatasız' yaptı!

Değişiklikleri kısaca yayınlamak:

 extern string     Order_Symbol= "EURUSD" ;

int init()
{

}

int start()
{ 
int Magic_Number_1,Magic_Number_2,Magic_Number_3;
bool bOrderClosed;

//////////////////////////////////////SETTING MAGIC NUMBER///////////////////////////////////////////////////

Set_Magic_Number();

//////////////////////////////////////SETTING MAGIC NUMBER COMPLETED/////////////////////////////////////////


//////////////////////////////////////LOCKING MINIMUM PROFIT/////////////////////////////////////////////////

if ( OrdersTotal ()> 0 )
      { 
       for ( int cnt= OrdersTotal ()- 1 ;cnt>= 0 ;cnt--)
        {
         if (! OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES )) continue ;
//-----------------------------------------------------------------------------------------------------------------------

             if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==Magic_Number_1)
                  {
                   if ( OrderProfit ()< 0.03 )
                    {                                                     
                     if ( OrderType ()== OP_BUY )
                      {                                                  
                        bOrderClosed = closeBuyOrder(iOrderType_Buy); //Closing Buy order
                           if (bOrderClosed)
                            {                             
                               Print ( "Buy Order 1 Closed" );              
                            }
                       else {
                             iLastError = GetLastError();                                       
                            } //end else if(bOrderClosed)
                          } //end if(OrderType()==OP_BUY)
//==========================================================================================================================
                         if ( OrderType ()== OP_SELL )
                           {                                                      
                             bOrderClosed = closeSellOrder(iOrderType_Sell); //Closing Sell order
                               if (bOrderClosed)
                                  {
                                     Print ( "Sell Order 1 Closed" );               
                                   }
                               else {    
                                    iLastError = GetLastError();                                
                                   } //end else if(bOrderClosed)
                                  } //end if(OrderType()==OP_SELL)                                            
                                 } // if (OrderProfit()<0.03)                                    
                                } // if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_1)
 //-------------------------------------------------------------------------------------------------------------------------
                         if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==Magic_Number_2)
                            {
                               if ( OrderProfit ()< 0.02 )
                                {                                                    
                                   if ( OrderType ()== OP_BUY )
                                            {                                                       
                                              bOrderClosed = closeBuyOrder(iOrderType_Buy); //Closing Buy order 
                                               if (bOrderClosed)
                                                  {
                                                     Print ( "Buy Order 2 Closed" );          
                                                  }
                                               else {
                                                   iLastError = GetLastError();                                        
                                                  } //end else if(bOrderClosed)
                                               } //end if(OrderType()==OP_BUY)
//==========================================================================================================================
                         if ( OrderType ()== OP_SELL )
                             {                                                       
                               bOrderClosed = closeSellOrder(iOrderType_Sell); //Closing Sell order        
                                 if (bOrderClosed)
                                    {
                                       Print ( "Sell Order 1 Closed" );
                                    }
                                 else {
                                     iLastError = GetLastError();                                        
                                    } //end else if(bOrderClosed)
                                   } //end if(OrderType()==OP_SELL)                                         
                                  } // if (OrderProfit()<0.02)                                    
                                 } // if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_2)
//------------------------------------------------------------------------------------------------------------------------------
                         if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==Magic_Number_3)
                            {
                             Print ( "Don't Close this Third Order" );                                                    
                            } // if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_3)
//-------------------------------------------------------------------------------------------------------------------------------
                           } //end for(cnt=OrdersTotal()-1;cnt>=0;cnt--) 
                          } // if(OrdersTotal()>0)
//////////////////////////////////////MINIMUM PROFIT LOCKED////////////////////////////////////////////////// 

if (TrailingStop> 0 && TrailingStart > 0 ) TrailOrder (TrailingStart, TrailingStop); 

//count open buy orders.

iOpenOrders_Buy = CntOrd(iOrderType_Buy, Symbol ());

//count open sell orders.

iOpenOrders_Sell = CntOrd(iOrderType_Sell, Symbol ()); 

//Conditional Part for Trade


if (Buy condition Met)
{
//Close Open Sell Positions 

double OpenPrice= Ask ;
                 int count= 3 ;
                 double   dTakeProfitPrice_1,dTakeProfitPrice_2,dTakeProfitPrice_3;
                dStopLossPrice = NormalizeDouble (OpenPrice - StopLoss * dPip, Digits );

                dTakeProfitPrice_1 = NormalizeDouble (OpenPrice + TakeProfit_1 * dPip, Digits );
                dTakeProfitPrice_2 = NormalizeDouble (OpenPrice + TakeProfit_2 * dPip, Digits );
                dTakeProfitPrice_3 = NormalizeDouble (OpenPrice + TakeProfit_3 * dPip, Digits );              

iLastError = 0 ;
   if (count== 3 ) 
    {
      BuyOrder_1= OrderSend (Order_Symbol, iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order" ,Magic_Number_1, 0 ,Blue);
       if (BuyOrder_1> 0 ) //Checking if the order was opened or not
        { 
         count = count - 1 ; 
        }

   else {
          iLastError = GetLastError();                            

        } 
       }
   if (count== 2 ) 
    {
     BuyOrder_2= OrderSend (Order_Symbol, iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_2, "Buy Order" ,Magic_Number_2, 0 ,Blue);
       if (BuyOrder_2> 0 ) 
       {
        count = count - 1 ;
       }
   else {
        iLastError = GetLastError();
       } 
      }
   if (count== 1 )
    {
     BuyOrder_3= OrderSend (Order_Symbol, iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_3, "Buy Order" ,Magic_Number_3, 0 ,Blue);
       if (BuyOrder_3> 0 ) 
       {      
        count = count - 1 ;
       }
   else {
        iLastError = GetLastError();                             
        }  
       }
      } 

   if (Sell condition met)
    { 

       //Close Open Buy Orders

        OpenPrice= Bid ;
        count= 3 ;                

       double SellOrder_1,SellOrder_2,SellOrder_3;
      dStopLossPrice = NormalizeDouble (OpenPrice + StopLoss * dPip, Digits );                

                dTakeProfitPrice_1 = NormalizeDouble (OpenPrice - TakeProfit_1 * dPip, Digits );
                dTakeProfitPrice_2 = NormalizeDouble (OpenPrice - TakeProfit_2 * dPip, Digits );
                dTakeProfitPrice_3 = NormalizeDouble (OpenPrice - TakeProfit_3 * dPip, Digits );               

      iLastError = 0 ;
       if (count== 3 )
       {
        SellOrder_1= OrderSend (Order_Symbol, iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_1 , "Sell Order" ,Magic_Number_1, 0 ,Red);               
           if (SellOrder_1> 0 ) //Checking if the order was opened or not
           {   
            count = count - 1 ; 
           }
       else {
            iLastError = GetLastError();                             
           } 
          }
       if (count== 2 )
         {
           SellOrder_2= OrderSend (Order_Symbol, iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_2 , "Sell Order" ,Magic_Number_2, 0 ,Red);             
             if (SellOrder_1> 0 ) //Checking if the order was opened or not
              {    
                count = count - 1 ; 
              }
         else {
               iLastError = GetLastError();                            
              } 
             }
       if (count== 1 ) 
         {
           SellOrder_3= OrderSend (Order_Symbol, iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice,dTakeProfitPrice_3 , "Sell Order" ,Magic_Number_3, 0 ,Red);                
             if (SellOrder_3> 0 ) //Checking if the order was opened or not
              { 
                count = count - 1 ; 
              }
         else {
               iLastError = GetLastError();                            
              } 
             }
            }
           }

void TrailOrder( double Trailingstart, double Trailingstop)
    {
     int ticket = 0 ;
       double tStopLoss;
       int cnt;
         double vPoint,vSlippage; 
         double sl;
           int Magic_Number_1,Magic_Number_2,Magic_Number_3;
           Set_Magic_Number();

if ( Digits == 3 || Digits == 5 )
    {vPoint = Point * 10 ; vSlippage = Slippage * 10 ;}
     else
    {vPoint = Point ; vSlippage = Slippage;}
RefreshRates ();

if ( OrdersTotal ()> 0 )
{
 for (cnt= OrdersTotal ()- 1 ;cnt>= 0 ;cnt--)
  {       
   if (! OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES )) continue ;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
                         if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==Magic_Number_1)
                          {
                           sl = OrderStopLoss (); // Stop Loss. 
                             tStopLoss = NormalizeDouble ( OrderStopLoss (), Digits ); // Stop Loss. 
                               if ( OrderType ()== OP_BUY )
                                {
                                   if ( Ask > NormalizeDouble ( OrderOpenPrice ()+TrailingStart* vPoint, Digits )
                                  && tStopLoss < NormalizeDouble ( Bid -(TrailingStop+TrailingStep)*vPoint, Digits ))
                                    {
                                     tStopLoss = NormalizeDouble ( Bid -TrailingStop*vPoint, Digits );                           
                                       ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),tStopLoss, OrderTakeProfit (), 0 ,Blue);
                                 if (ticket > 0 )
                                   {
                                     Print ( "TrailingStop #2 Activated: " , OrderSymbol (), ": SL" , tStopLoss, ": Bid" , Bid );                            
                                   }
                                     else {
                                         iLastError = GetLastError();
                                          }
                                         } //end if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits) && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){
                                        } //end if(OrderType()==OP_BUY){
//-------------------------------------------------------------------------------------------------------------------------------------
                       
 
if ( OrderType ()== OP_SELL )
                              {
                                 if ( Bid < NormalizeDouble ( OrderOpenPrice ()-TrailingStart*vPoint, Digits )
                                   && (sl >( NormalizeDouble ( Ask +(TrailingStop+TrailingStep)*vPoint, Digits )))
                                    || ( OrderStopLoss ()== 0 ))
                                      {               
                                        sl = NormalizeDouble ( Ask +TrailingStop*vPoint, Digits );                              
                                                ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),sl, OrderTakeProfit (), 0 ,Red);                       
                                     if (ticket > 0 )
                                              {
                                               Print ( "Trailing #2 Activated: " , OrderSymbol (), ": SL " ,sl, ": Ask " , Ask );
                                               }
                                           else {
                                               iLastError = GetLastError();
                                              }
                                             } //end if (Bid < NormalizeDouble(OrderOpenPrice()-TrailingStart*vPoint,Digits)
                                            } //end if (OrderType()==OP_SELL)
                                           } // end if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_1) 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////              
                 if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==Magic_Number_2)
                     {
                      sl = OrderStopLoss (); // Stop Loss.
                       tStopLoss = NormalizeDouble ( OrderStopLoss (), Digits ); // Stop Loss.
                         if ( OrderType ()== OP_BUY )
                         {
                           if ( Ask > NormalizeDouble ( OrderOpenPrice ()+TrailingStart* vPoint, Digits )
                            && tStopLoss < NormalizeDouble ( Bid -(TrailingStop+TrailingStep)*vPoint, Digits ))
                             {
                               tStopLoss = NormalizeDouble ( Bid -TrailingStop*vPoint, Digits );                           
                                ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),tStopLoss, OrderTakeProfit (), 0 ,Blue);
               if (ticket > 0 )
                              {
                                 Print ( "TrailingStop #2 Activated: " , OrderSymbol (), ": SL" , tStopLoss, ": Bid" , Bid );                           
                              }
                           else {
                               iLastError = GetLastError();
                              }
                             } //end if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits) && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){
                           } //end if(OrderType()==OP_BUY){
//-------------------------------------------------------------------------------------------------------------------------------------
                 if ( OrderType ()== OP_SELL )
                       {
                         if ( Bid < NormalizeDouble ( OrderOpenPrice ()-TrailingStart*vPoint, Digits )
                             && (sl >( NormalizeDouble ( Ask +(TrailingStop+TrailingStep)*vPoint, Digits )))
                               || ( OrderStopLoss ()== 0 ))
                              {   
                               sl = NormalizeDouble ( Ask +TrailingStop*vPoint, Digits );
                                ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),sl, OrderTakeProfit (), 0 ,Red);                                
                         if (ticket > 0 )
                                       {
                                         Print ( "Trailing #2 Activated: " , OrderSymbol (), ": SL " ,sl, ": Ask " , Ask );                                                          
                                       }
                                   else {
                                        iLastError = GetLastError();                                    
                                       }
                                    } //end if (Bid < NormalizeDouble(OrderOpenPrice()-TrailingStart*vPoint,Digits)
                                   } //end if (OrderType()==OP_SELL)
                                  } // end if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_2)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
               if ( OrderSymbol () == Symbol () && OrderMagicNumber () ==Magic_Number_3)
                     {
                       sl = OrderStopLoss (); // Stop Loss.
                         tStopLoss = NormalizeDouble ( OrderStopLoss (), Digits ); // Stop Loss.                          
                           if ( OrderType ()== OP_BUY )
                               {
                                ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),tStopLoss, OrderTakeProfit (), 0 ,Blue);
                 if (ticket > 0 )
                                {
                                 Print ( "Stop Loss Unchanged" );                           
                                }
                             else {
                                 iLastError = GetLastError();
                                }
                               } //end if(OrderType()==OP_BUY)                           
//------------------------------------------------------------------------------------------------------------------------------
                 if ( OrderType ()== OP_SELL )                                     
                      {                 
                       sl= OrderStopLoss (); // Stop Loss.
                         ticket = OrderModify ( OrderTicket (), OrderOpenPrice (),sl, OrderTakeProfit (), 0 ,Red);                               
                       if (ticket > 0 )
                                      {
                                       Print ( "Trailing #2 Activated: " , OrderSymbol (), ": SL " ,sl, ": Ask " , Ask );                                                                         
                                      }
                                   else {
                                       iLastError = GetLastError();                                 
                                      }
                                     } //end if (OrderType()==OP_SELL)
                                    } // end if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_3)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                  } //end for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
                                } // end if(OrdersTotal()>0)
                               return ( 0 );
                              } // end void TrailOrder(double Trailingstart,double Trailingstop)

 bool closeBuyOrder( int iBuytype)
                              {
                               bool bClosed_;
                                 int Magic_Number_1,Magic_Number_2,Magic_Number_3;
                                 Set_Magic_Number();
                                 if ( OrdersTotal ()> 0 )
                                  {
                                   for ( int Counter= OrdersTotal ()- 1 ;Counter>= 0 ;Counter--)
                                    {
                                     OrderSelect (Counter, SELECT_BY_POS , MODE_TRADES );
                                       if (iBuytype== OP_BUY && OrderType ()== OP_BUY )
                                        {
//------------------------------------------------------------------------------------------------------------------------------------
                                           if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic_Number_1)
                                             {
                                               RefreshRates ();
                                               OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Bid , Digits ), Slippage);
                                             }
//-------------------------------------------------------------------------------------------------------------------------------------
                                                 if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic_Number_2)
                                                 {
                                                   RefreshRates ();
                                                     OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Bid , Digits ), Slippage);
                                                 }
//-------------------------------------------------------------------------------------------------------------------------------------
                                                 if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic_Number_3)
                                                 {
                                                   RefreshRates ();                                                    
                                                     Print ( "Don't Close this Thrid Order" );
                                                 }
//-------------------------------------------------------------------------------------------------------------------------------------
                                              } //if(iBuytype==OP_BUY && OrderType()==OP_BUY)
                                           } //for(int Counter=OrdersTotal()-1;Counter>=0;Counter--)
                                       } //if(OrdersTotal()>0)
                                 return (bClosed_);
                            } //end bool closeBuyOrder(int iBuytype)
//==========================================================================================
                             bool closeSellOrder( int iSelltype)
                              {
                               bool bClosed_;
                               int Magic_Number_1,Magic_Number_2,Magic_Number_3;
                                Set_Magic_Number();
                                 if ( OrdersTotal ()> 0 )
                                  {
                                   for ( int Counter= OrdersTotal ()- 1 ;Counter>= 0 ;Counter--)
                                   {
                                     if (! OrderSelect (Counter, SELECT_BY_POS , MODE_TRADES )) continue ;
                                       if (iSelltype== OP_SELL && OrderType ()== OP_SELL )
                                         {
//------------------------------------------------------------------------------------------------------------------------------------                                              
                                           if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic_Number_1)
                                             {
                                               RefreshRates ();
                                               bClosed_ = OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Ask , Digits ),Slippage);
                                             }
//-------------------------------------------------------------------------------------------------------------------------------------
                                                 if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic_Number_2)
                                                 {
                                                   RefreshRates ();
                                                    bClosed_ = OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Ask , Digits ),Slippage);
                                                 }
//-------------------------------------------------------------------------------------------------------------------------------------
                                                 if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic_Number_3)
                                                 {
                                                   RefreshRates ();
                                                     Print ( "Don't Close this Thrid Order" );
                                                 }
//-------------------------------------------------------------------------------------------------------------------------------------
                                              } //end if(iSelltype==OP_SELL && OrderType()==OP_SELL)
                                             } //for(int Counter=OrdersTotal()-1;Counter>=0;Counter--)
                                           } //end if(OrdersTotal()>0)                                      
                                       return (bClosed_);
                            } //end bool closeSellOrder(int iSelltype)
//==========================================================================================

void Set_Magic_Number()
 {
   int Magic_Number_1,Magic_Number_2,Magic_Number_3;
   if (Order_Symbol== "EURUSD" ) 
    { 
     Magic_Number_1= 1301 ;
     Magic_Number_2= 1302 ;
     Magic_Number_3= 1303 ; 
    }

   if (Order_Symbol== "GBPUSD" ) 
    { 
     Magic_Number_1= 1601 ;
     Magic_Number_2= 1602 ;
     Magic_Number_3= 1603 ;
    }

   if (Order_Symbol== "AUDUSD" ) 
    { 
     Magic_Number_1= 8701 ;
     Magic_Number_2= 8702 ;
     Magic_Number_3= 8703 ;
    }
return ( 0 );
}

Set_Magic_Number() işlevi ile kafam karıştı.

Doğru tanımlamış mıyım? Ayrıca diğer işlevlerde çağırırken düzgün çalışacak mı?

Saygılarımızla

 
Arav007 :

Set_Magic_Number() işleviyle kafam karıştı.

Doğru tanımlamış mıyım? Ayrıca diğer işlevlerde çağırırken düzgün çalışacak mı?

Saygılarımızla

Burada sembolünüzün "EURUSD" olmadığını okudum

doğru sembolü kullanmalısın

 
deVries :

Burada sembolünüzün "EURUSD" olmadığını okudum

doğru sembolü kullanmalısın

Problem değil. EA'yı test ettiğim komisyoncunun sembolü EURUSD,GBPUSD....

EA'yı, sembolün EURUSDpro olduğu komisyoncuya eklersem, sadece 'pro'yu ekleyeceğim.

Kodumu incelediniz mi?

Minimum kar özelliği bir 'Başarısızlık'tır.

Alım satımlarda Zarar/Kardan bağımsız olarak ne zaman yapılırsa açık olan tüm alım satımları kapatıyor!

Ama amacım böyle değil.

Bir ticaret kar alanına girerse ve sonra piyasa geri dönmeye başlarsa, bu 'Minimum Kar' özelliğinin garanti etmesini istiyorum.

o ticaret benim istediğim minimum kârla kapandı.

Ve burada da 'Üçüncü' ticaretin bu özellikten etkilenmesini istemiyorum.

Böyle bir şey yazmaya çalıştım ama şimdi çalışmıyor.

 
Arav007 :

Problem değil. EA'yı test ettiğim komisyoncunun sembolü EURUSD,GBPUSD....

EA'yı, sembolün EURUSDpro olduğu komisyoncuya eklersem, sadece 'pro'yu ekleyeceğim.

Kodumu incelediniz mi?

Minimum kar özelliği bir 'Başarısızlık'tır.

Alım satımlarda Zarar/Kardan bağımsız olarak ne zaman yapılırsa açık olan tüm alım satımları kapatıyor!

Ama amacım böyle değil.

Bir ticaret kar alanına girerse ve sonra piyasa geri dönmeye başlarsa, bu 'Minimum Kar' özelliğinin garanti etmesini istiyorum.

o ticaret benim istediğim minimum kârla kapandı.

Ve burada da 'Üçüncü' ticaretin bu özellikten etkilenmesini istemiyorum.

Böyle bir şey yazmaya çalıştım ama şimdi çalışmıyor.


Bunu çok karmaşık hale getiriyorsun çünkü bununla nasıl başa çıkacağına dair hiçbir fikrin yok.

ne kadar çok okur ve kendinizi programlamaya çalışırsanız, daha karmaşık şeyler yapmak o kadar kolay olur

ancak basit şeylerle başlayın, bir programı bir işlem için çalıştırmaya başlarsanız, daha sonra daha fazla işlemle denersiniz.

çok şey öğrenmelisin.

kısa, basit bir yazılı program seçmeye başlarsanız ve test için bunda bazı değişiklikler yaparsanız

o programın nasıl çalıştığını öğrenebilirsin

Senin başlattığın problemin

nasıl yapacağımı gör

 //+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          "https://www.mql4.com"

input double TakeProfit    = 50 ;
input double Lots          = 0.1 ;
input int     MagicNumber   = 16384 ;
input int     TakeProfit1   = 15 ;
input int     TakeProfit2   = 25 ;
input int     TakeProfit3   = 0 ;
input int     StopLoss      = 100 ;   
input double BreakEven     = 10 ;
input double BreakEvenSL   = 5 ;
input double TrailingStop  = 30 ;
input double TrailingStep  = 30 ;
input int     SlippagePips  = 3 ;
input double MACDOpenLevel = 3.0 ;
input double MACDCloseLevel= 2 ;
input int     MATrendPeriod = 26 ;

int count,countbuy,countsell;


//++++ These are adjusted for 5 digit brokers.
int      pips2points;       // slippage  3 pips    3=points    30=points
double   pips2dbl;         // Stoploss 15 pips    0.015      0.0150
int      Digitspips;       // DoubleToStr(dbl/pips2dbl, Digitspips)
int      Slip;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   if ( Digits % 2 == 1 )   // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262
     {pips2dbl = Point * 10 ; pips2points = 10 ;   Digitspips = 1 ;}
     else {pips2dbl = Point ;    pips2points =   1 ;   Digitspips = 0 ;}
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl 
  Slip = pips2points * SlippagePips;   //Slippage        
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ( void )
  {
   double MacdCurrent,MacdPrevious;
   double SignalCurrent,SignalPrevious;
   double MaCurrent,MaPrevious;
   int     cnt,ticket,total;
//---
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external 
// variables (Lots, StopLoss, TakeProfit, 
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
//---
   if ( Bars < 100 )
     {
       Print ( "bars less than 100" );
       return ;
     }

//---
   if ((countbuy> 0 )||(countsell> 0 ))
     {
       int CMD;
       double SL,TP,price;
       int LastError = 0 ;
       RefreshRates ();
       if (countbuy> 0 )
           {
            count=countbuy;
            CMD = OP_BUY ;
            price = Ask ;
             if (StopLoss> 0 )SL= price-StopLoss*pips2dbl;
             if (count== 3 && TakeProfit1> 0 )TP= price+TakeProfit1*pips2dbl;
             if (count== 2 && TakeProfit2> 0 )TP= price+TakeProfit2*pips2dbl;
             if (count== 1 && TakeProfit3> 0 )TP= price+TakeProfit3*pips2dbl;
           } 
         else 
           {
            count=countsell;
            CMD = OP_SELL ;
            price = Bid ;
             if (StopLoss> 0 )SL= price+StopLoss*pips2dbl;
             if (count== 3 && TakeProfit1> 0 )TP= price-TakeProfit1*pips2dbl;
             if (count== 2 && TakeProfit2> 0 )TP= price-TakeProfit2*pips2dbl;
             if (count== 1 && TakeProfit3> 0 )TP= price-TakeProfit3*pips2dbl;
           }             
      ticket= OrderSend ( Symbol (), CMD, Lots, price , Slip, SL, TP, "macd sample" ,MagicNumber, 0 ,Green);
       if (ticket> 0 ) //Checking if the order was opened or not
           { 
             OrderPrint ();
            countbuy--;
            countsell--; 
           }
         else {
              LastError = GetLastError();                               
               if (CMD== OP_BUY ) Print ( "Error sending buy order " +count+ ". Error code=  " + LastError);
               if (CMD== OP_SELL ) Print ( "Error sending sell order " +count+ ". Error code=  " + LastError);
             }     
   if ((countbuy> 0 )||(countsell> 0 )) return ;
   } 

//--- to simplify the coding and speed up access data are put into internal variables
   MacdCurrent= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE , MODE_MAIN , 0 );
   MacdPrevious= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE , MODE_MAIN , 1 );
   SignalCurrent= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE , MODE_SIGNAL , 0 );
   SignalPrevious= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE , MODE_SIGNAL , 1 );
   MaCurrent= iMA ( NULL , 0 ,MATrendPeriod, 0 , MODE_EMA , PRICE_CLOSE , 0 );
   MaPrevious= iMA ( NULL , 0 ,MATrendPeriod, 0 , MODE_EMA , PRICE_CLOSE , 1 );
//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   total= 0 ;
   for (cnt = OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
     {
       if ( OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES )== false ) break ;
       if ( OrderSymbol ()!= Symbol ()|| OrderMagicNumber ()!=MagicNumber) continue ;      
       if ( OrderType ()<= OP_SELL)    // check for opened position 
        {
         total++;
         //--- long position is opened
         if ( OrderType ()== OP_BUY )
           {
             //--- should it be closed?
             if (MacdCurrent> 0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && 
               MacdCurrent>(MACDCloseLevel*pips2dbl))
              {
               //--- close order
               OrderClose ( OrderTicket (), OrderLots (), Bid ,Slip,Violet);
              }
             //--- check for breakeven  
             if (BreakEven> 0 )
              {
               if ( Bid - OrderOpenPrice ()>=pips2dbl*BreakEven)
                 {
                   if ( OrderStopLoss ()< OrderOpenPrice ())
                    {
                     //--- modify order
                     if ( OrderTakeProfit ()> Point ) OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()+(BreakEvenSL*pips2dbl), OrderTakeProfit (), 0 ,Green);
                    }
                 }
              }                   
             //--- check for trailing stop
             if (TrailingStop> 0 )
              {
               if ( OrderOpenPrice ()< OrderStopLoss ())
                 {
                   if ( OrderStopLoss ()< Bid -pips2dbl*(TrailingStop+TrailingStep))
                    {
                     //--- modify order
                     OrderModify ( OrderTicket (), OrderOpenPrice (), Bid -pips2dbl*TrailingStop, OrderTakeProfit (), 0 ,Green);
                    }
                 }
              }
           }
         else // go to short position
           {
             //--- should it be closed?
             if (MacdCurrent< 0 && MacdCurrent>SignalCurrent && 
               MacdPrevious<SignalPrevious && MathAbs (MacdCurrent)>(MACDCloseLevel*pips2dbl))
              {
               //--- close order and exit
               OrderClose ( OrderTicket (), OrderLots (), Ask ,Slip,Violet);
              }
             //--- check for breakeven  
             if (BreakEven> 0 )
              {
               if ( OrderOpenPrice ()- Ask >pips2dbl*BreakEven)
                 {
                   if ( OrderStopLoss ()> OrderOpenPrice ())
                    {
                     //--- modify order
                     if ( OrderTakeProfit ()> Point ) OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice ()-(BreakEvenSL*pips2dbl), OrderTakeProfit (), 0 ,Green);
                    }
                 }
              }                  
             //--- check for trailing stop
             if (TrailingStop> 0 )
              {
               if (( OrderOpenPrice ()> OrderStopLoss ())&&( OrderStopLoss ()> Point ))
                 {
                   if ( OrderStopLoss ()>( Ask +pips2dbl*(TrailingStop+TrailingStep)))
                    {
                     //--- modify order
                     OrderModify ( OrderTicket (), OrderOpenPrice (), Ask +pips2dbl*TrailingStop, OrderTakeProfit (), 0 ,Red);
                    }
                 }
              }
           }
        }
     }
   
   if (total< 1 )
     {
      countbuy = 0 ;
      countsell = 0 ;
       //--- no opened orders identified
       if ( AccountFreeMargin ()<( 3000 *Lots))//3trades*1000
        {
         Print ( "We have no money. Free Margin = " , AccountFreeMargin ());
         return ;
        }
       //--- check for long position (BUY) possibility
       if (MacdCurrent< 0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && 
         MathAbs (MacdCurrent)>(MACDOpenLevel*pips2dbl) && MaCurrent>MaPrevious)
        {
        countbuy = 3 ; //we can open
        }
       //--- check for short position (SELL) possibility
       if (MacdCurrent> 0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && 
         MacdCurrent>(MACDOpenLevel*pips2dbl) && MaCurrent<MaPrevious)
        {
        countsell = 3 ; //we can open
        }      
     }
//---
  }
//+------------------------------------------------------------------+

                                            

Symbol() için farklı girişlere gerek yok

3 farklı Sihirli sayı..

 
Arav007 :

Problem değil. EA'yı test ettiğim komisyoncunun sembolü EURUSD,GBPUSD....

EA'yı, sembolün EURUSDpro olduğu komisyoncuya eklersem, sadece 'pro'yu ekleyeceğim.

Kodumu incelediniz mi?

Minimum kar özelliği bir 'Başarısızlık'tır.

Alım satımlarda Zarar/Kardan bağımsız olarak ne zaman yapılırsa açık olan tüm alım satımları kapatıyor!

Ama amacım böyle değil.

Bir ticaret kar alanına girerse ve sonra piyasa geri dönmeye başlarsa, bu 'Minimum Kar' özelliğinin garanti etmesini istiyorum.

o ticaret benim istediğim minimum kârla kapandı.

Ve burada da 'Üçüncü' ticaretin bu özellikten etkilenmesini istemiyorum.

Böyle bir şey yazmaya çalıştım ama şimdi çalışmıyor.


80 hata 6 uyarı kodunuzu derledim

çoğunlukla bildirilmemiş tanımlayıcı

tüm tanımlayıcıların beyan edildiği koda ihtiyacım var

dosya çok büyükse ekleyin

dosyayı derleyin ve aldığınız hataları kontrol edin