누가 로봇을 도울 수 있습니까? 로봇이 작동하지 않는 이유는 무엇입니까? - 페이지 3

 
김용
주문을 개설해야 하는 경우 SL / TP 대신 0을 지정하십시오. 그리고 미래를 위해 확인을 설정해야 합니다: SL 또는 TP가 0이면 요청에 0을 지정해야 합니다. 값을 지정한 다음 주문의 특정 종가 를 계산합니다.
 
Dmitriy Gizlyk :
김용
주문을 개설해야 하는 경우 SL / TP 대신 0을 지정하십시오. 그리고 미래를 위해 다음을 확인해야 합니다: SL 또는 TP가 0이면 요청에 0을 지정해야 합니다. 값을 지정한 다음 특정 주문 마감 가격 을 계산합니다.
모든 거래에 대한 총 이익에 따라 어드바이저가 주문을 열고 닫았으면 합니다....
 
AdikAmir :

외부 이중 로트=0.1;
extern int FastMAPeriod=5;
extern int FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int FastMAPrice=0; // 0-종가, 1-시가, 2-고가, 3-저, 4-중앙값, 5-일반, 6-가중
extern int SlowMAPeriod=75;
extern int SlowMAMethod=3; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
extern int SlowMAPrice=3; // 0-종가, 1-시가, 2-고가, 3-저, 4-중앙값, 5-일반, 6-가중
외부 정수 TP=500; // 이익을 취하다
외부 정수 SL=250; //스톱로스
이중 티켓;

정수 시작(){

더블 fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
이중 slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
더블 fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
이중 slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);

if (OrdersTotal()==0)
{
if (fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))
{ 티켓 = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,NULL,0,0, CLR_NONE );
if (티켓==0) Print("오류");
}
if (slow_ma1>fast_ma1 && (slow_ma2<fast_ma2))
{
티켓 = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
if (티켓==0) Print("오류");
}

}

리턴(0);
}




잡지를 읽다. 컴파일하는 동안 감지되지 않은 오류 메시지가 있을 수 있습니다.

여기에 오류가 있습니다. OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);

다음과 같아야 합니다. OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);

매도할 때 손절매는 현 가격보다 높고 테이크는 낮아야 하지만 반대로 스탑은 가격보다 낮게, 테이크는 높게 해야 합니다.

 
GIM :
모든 거래에 대한 총 이익에 따라 어드바이저가 주문을 열고 닫았으면 합니다....

이 경우, 포지션을 열 때 SL=0, TP=0을 배치합니다.

그리고 포지션을 청산하려면 각 틱에서 받은 이익을 주어진 값과 비교해야 합니다. 그리고 이익이 지정된 값에 도달하면 OrderClose(....)를 통해 주기의 모든 주문을 닫습니다.

현재 이익의 정의에 따라 보기에 있는 작업의 변형이 가능합니다. 계정의 이익을 보면 단순히 AccountProfit()을 사용할 수 있지만 루프를 통해 더 많은 시간이 소요될 수 있습니다(필요한 주문의 이익만 계산할 수 있음)

   double profit= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== /* Ваш магик */ )
        {
         profit+=OrderProfit()+OrderSwap()+OrderCommission();
        }
     }
 
Dmitriy Gizlyk :

이 경우, 포지션을 열 때 SL=0, TP=0을 배치합니다.

그리고 포지션을 청산하려면 각 틱에서 받은 이익을 주어진 값과 비교해야 합니다. 그리고 이익이 지정된 값에 도달하면 OrderClose(....)를 통해 주기의 모든 주문을 닫습니다.

현재 이익의 정의에 따라 보기에 있는 작업의 변형이 가능합니다. 계정의 이익을 보면 단순히 AccountProfit()을 취할 수 있지만 루프를 통해 더 많은 시간이 소요될 수 있습니다(그러면 필요한 주문의 이익만 계산할 수 있음)

 extern double   lots       = 0.01 ;
extern int   stop_loss      = 0 ;  
extern int take_profit    = 0 ;

int             last_bar       = 0 ;

int start(){
   if (last_bar == Bars ) return ( 0 );
   last_bar = Bars ;
   if ( OrdersTotal () == 0 ){
           OrderSend ( Symbol (), OP_BUY, lots ,Ask, 50 , Bid - stop_loss * Point , Ask + take_profit * Point ,   "" , 1 , 0 , clrBlue );
           OrderSend ( Symbol (), OP_SELL, lots ,Bid, 50 , Ask+ stop_loss * Point , Bid - take_profit * Point ,   "" , 1 , 0 , clrRed );      
}
   return ( 0 ); 
}
 double profit= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== /* Ваш магик */ )
        {
         profit+=OrderProfit()+OrderSwap()+OrderCommission();
        }
     }
 
GIM :
손절매와 이익실현이 예금 통화 로 지정된 경우
 extern double   lots       = 0.01 ;
extern int   stop_loss      = 10 ;   /* Указываем в валюте депозита */
extern int take_profit    = 20 ;   /* Указываем в валюте депозита */
extern int Magic          = 1 ;

int             last_bar       = 0 ;

int start(){
   if (last_bar == Bars ) return ( 0 );
   last_bar = Bars ;
   if ( OrdersTotal () == 0 ){
           OrderSend ( Symbol (), OP_BUY, lots ,Ask, 50 , 0 , 0 ,   "" , Magic, 0 , clrBlue );
           OrderSend ( Symbol (), OP_SELL, lots ,Bid, 50 , 0 , 0 ,   "" , Magic, 0 , clrRed );      
}
 double profit= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== Magic)
        {
         profit+=OrderProfit()+OrderSwap()+OrderCommission();
        }
     }
 int requot= 0 ;
 if (profit>=take_profit || (-profit)>=stop_loss)
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== Magic)
        {
         if ( OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 50 , clrRed ))
               requot= 0 ;
             else
              {
               requot++;
              }
         if (requot> 10 )
              {
               i++;
               requot= 0 ;
              }
            i--;
        }
     }
   return ( 0 ); 
}
 
Dmitriy Gizlyk :
손절매와 이익실현이 예금 통화 로 지정된 경우

for(int i=0;i<OrdersTotal();i++)

오류: "나"

 
누가 알아
 extern int Magic          = 1 ;


что означает??
 
GIM :
누가 알아

자체 주문에서만 작동하도록 EA 주문의 ID입니다.

 
Vladimir Zubov :

자체 주문에서만 작동하도록 EA 주문의 ID입니다.

이해하는 방법, 주문만으로 ....