프로그래머에게 100% 관심을 갖는 방법, 당신의 IDEA에 따라 조언자를 작성하십시오 - 페이지 11

 

또는 이 EA에 대해 조정 가능한 이익실현 설정을 구성하십시오.

여기에 완전한 코드가 있습니다.

 
//+------------------------------------------------------------------+
//|                                                         Gray.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
extern double lot=1;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  int tiket=0;
//----
if (iVolume(NULL,0,0)==1){
    Print("WATR1="+iCustom( NULL, 0, "WATR", 0, 0) );
    Print("WATR2="+iCustom( NULL, 0, "WATR", 1, 0) );
    
    if (iCustom( NULL, 0, "WATR", 0, 2)<1000 && iCustom( NULL, 0, "WATR", 1, 1)<1000) {tiket =OrderSend(Symbol(),OP_SELL,lot,Bid,3,iCustom( NULL, 0, "WATR", 1, 0),0,NULL,16384,0,Red);}
    if (iCustom( NULL, 0, "WATR", 1, 2)<1000 && iCustom( NULL, 0, "WATR", 0, 1)<1000) {tiket= OrderSend(Symbol(),OP_BUY,lot,Ask,3, iCustom( NULL, 0, "WATR", 0, 0),0,NULL,16384,0,Green);}
    CheckOrders();
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
}
void CheckOrders(){
int pos=0;
int total=OrdersTotal();
for (pos=0;pos<total;pos++) {
if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true){ 
if (OrderType()==OP_BUY && OrderStopLoss()<iCustom( NULL, 0, "WATR", 0, 1))OrderModify(OrderTicket(),OrderOpenPrice(),iCustom( NULL, 0, "WATR", 0, 1),OrderTakeProfit(),0,Green);
if (OrderType()==OP_SELL && OrderStopLoss()>iCustom( NULL, 0, "WATR", 1, 1))OrderModify(OrderTicket(),OrderOpenPrice(),iCustom( NULL, 0, "WATR", 1, 1),OrderTakeProfit(),0,Red);
                                                                                   }
                                                          }
                                      }
 
Ultramarin :

또는 이 EA에 대해 조정 가능한 이익실현 설정을 구성하십시오.

여기에 완전한 코드가 있습니다.

노력하지 않았습니까?
 
Registr :
군청 :

또는 이 EA에 대해 조정 가능한 이익실현 설정을 구성합니다.

여기에 완전한 코드가 있습니다.

노력하지 않았습니까?
이것이 완전한 EA 코드라면 레지스트리 에서 최고의 조언을 드린 것입니다.
 

몇 가지 의견을 추가할 수 있습니다.

1. 시작 함수에 속하는 return (0) 문은 적어도 하나의 중괄호 아래에 중복되어야 합니다. T.K. 이제 1과 같은 볼륨에 대한 조건이 트리거되는 경우에만 작동합니다.

나머지 시간에는 시작 기능이 제대로 닫히지 않아야 합니다.

호출된 표시기의 값에 대한 2가지 조건 <1000, 이는 아마도 막대의 버퍼에서 값이 하나 없다는 것을 보여주기 위한 것입니다.

즉, 교차점(현재 가격에 대한 표시기 및 상대적 위치의 색상 변경)

이 버전에서는 현재 가격 값이 1000보다 큰 상품(예: DOW)에서만 작동합니다.

표시기가 현재 막대에 하나의 색상만 그리는 경우(이 막대의 다른 버퍼 값은 0)

그렇지 않으면 거의 모든 통화 쌍에서 표시기의 현재 값이 항상 1000 미만이고 조건이 각 막대에서 트리거됩니다.

3. 다음과 같이 새로운 바의 출현 조건을 취하는 것을 권장합니다.


 int time ;
 
int start
   {
      if ( time != Time [ 1 ])
         {
            // расчет индикатора и выполение действий с ордерами
            //-----
            //-----
            //-----
            //-----
            time = Time [ 1 ] ;
 
         }
       return ( 0 ) ;
   }



 
olyakish :

몇 가지 의견을 추가할 수 있습니다.

1. 시작 함수에 속하는 return(0) 문은 적어도 하나의 중괄호 아래에서 중복되어야 합니다. T.K. 이제 1과 같은 볼륨에 대한 조건이 트리거되는 경우에만 작동합니다.

나머지 시간에는 시작 기능이 제대로 닫히지 않아야 합니다.

호출된 표시기의 값에 대한 2가지 조건 <1000, 이는 아마도 막대의 버퍼에서 값이 하나 없다는 것을 보여주기 위한 것입니다.

즉, 교차점(현재 가격에 대한 표시기 및 상대적 위치의 색상 변경)

이 버전에서는 현재 가격 값이 1000보다 큰 상품(예: DOW)에서만 작동합니다.

표시기가 현재 막대에 하나의 색상만 그리는 경우(이 막대의 다른 버퍼 값은 0)

그렇지 않으면 거의 모든 통화 쌍에서 표시기의 현재 값이 항상 1000 미만이고 조건이 각 막대에서 트리거됩니다.

3. 다음과 같이 새로운 바의 출현 조건을 취하는 것을 권장합니다.


어떤 키를 눌러야하는지 그에게 더 잘 설명하십시오 .. :)
 

예, 여기에 다른 것이 있습니다.

4. 사용자 지정 표시기를 12번 호출하는 것은 적어도 신성 모독입니다 :)

당신의 경우 6 번이면 충분합니다 (나는 많이 세었습니다)

Expert Advisor의 처리 속도는 2배는 아니지만 1.5에서는 이러한 작업(코드 최적화)을 통해서만 매개변수 최적화와 혼동되지 않도록 해야 한다고 생각합니다.


 //+------------------------------------------------------------------+
//|                                                         Gray.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//|                                   обработал напильником olyakish |
//+------------------------------------------------------------------+
#property copyright " Copyright © 2007, MetaQuotes Software Corp. "
#property link      " https://www.metaquotes.net "
 
extern double lot = 1 ;
extern string rem01 ="Профит в пунктах от текущей цены";
extern int TP = 100 ;
 
int time ;
double WATR [ 2 , 3 ] ; // первое измерение - индекс буфера; второе измерение - индекс бара 
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ()
  {
   int tiket = 0 ;
 
   if ( Time [ 1 ] != time )
      {
         WATR [ 0 , 0 ] = iCustom ( NULL , 0 , " WATR " , 0 , 0 ) ;
         WATR [ 1 , 0 ] = iCustom ( NULL , 0 , " WATR " , 1 , 0 ) ;
         WATR [ 0 , 1 ] = iCustom ( NULL , 0 , " WATR " , 0 , 1 ) ;
         WATR [ 1 , 1 ] = iCustom ( NULL , 0 , " WATR " , 1 , 1 ) ;
         WATR [ 0 , 2 ] = iCustom ( NULL , 0 , " WATR " , 0 , 2 ) ;
         WATR [ 1 , 2 ] = iCustom ( NULL , 0 , " WATR " , 1 , 2 ) ;         
         Print ( " WATR1= " , WATR [ 0 , 0 ]) ;
         Print ( " WATR2= " , WATR [ 1 , 0 ]) ;
    
         if ( WATR [ 0 , 2 ] > 0 && WATR [ 1 , 1 ] > 0 ) // проверить это место (правильно ли будет направелние  открытия по индикатору)
            {
               tiket = OrderSend ( Symbol () , OP_BUY , lot , Ask , 3 , WATR [ 0 , 0 ] , Bid + TP * Point , NULL , 16384 , 0 , Green ) ;
            }
         if ( WATR [ 1 , 2 ] > 0 && WATR [ 0 , 1 ] > 0 ) // проверить это место (правильно ли будет направелние  открытия по индикатору)
            {
               tiket = OrderSend ( Symbol () , OP_SELL , lot , Bid , 3 , WATR [ 1 , 0 ] , Ask - TP * Point , NULL , 16384 , 0 , Red ) ;                           
            }
         CheckOrders () ;
         time = Time [ 1 ] ;
      }
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
void CheckOrders ()
   {
      int pos = 0 ;
      int total = OrdersTotal () ;
      for ( pos = 0 ; pos < total ; pos ++ ) 
         {
            if ( OrderSelect ( pos , SELECT_BY_POS , MODE_TRADES ) == true )
               { 
                  if ( OrderType () == OP_BUY && OrderStopLoss () < WATR [ 0 , 1 ]){ OrderModify ( OrderTicket () , OrderOpenPrice () , WATR [ 0 , 1 ] , OrderTakeProfit () , 0 , Green ) ; }
                  if ( OrderType () == OP_SELL && OrderStopLoss () > WATR [ 1 , 1 ]){ OrderModify ( OrderTicket () , OrderOpenPrice () , WATR [ 1 , 1 ] , OrderTakeProfit () , 0 , Red ) ; }
               }
         }
      return ( 0 ) ;  // на самом деле нужно просто return но так вроде писать нельзя ...
    }
//+------------------------------------------------------------------+

비록 그렇다 하더라도

확인하다



 
불행히도 작동하지 않습니다
 

누구든지 설명 할 수 있습니까?

매개변수가 완전히 동일한 두 개의 동일한 Expert Advisor가 있습니다.

하나는 구매하고 다른 하나는 동시에 판매 중입니다.

입장시간과 퇴장시간이 동일합니다

어떻게 둘 다 깨끗하게 병합될 수 있습니까?

 
Ultramarin :

어떻게 둘 다 깨끗하게 병합될 수 있습니까?

스프레드로
사유: