[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 404

 
splxgf :
주문을 열기 전에 첫 번째 옵션을 두는 것이 더 좋습니다(OrderSend)
정말 감사합니다! 모든 것이 작동합니다 :)
 
kolyango :

이러한 모든 조건이 즉시 차례로 따르지 않을 수 있으므로(아마도 1-2-3시간 후에) 표시기 값이 1.0000에 도달하는 즉시 이 조건이 매 틱마다 더 이상 확인되지 않고 다음 시간까지 기다려야 합니다. 하나의 막대가 하락과 함께 닫히고 그 후 이 2가지 조건은 매 틱마다 확인되지 않고 지표 값이 0.9980 이하가 될 때까지 기다립니다. 모든 조건이 충족되면 400p의 손절매로 0.1랏을 판매하는 시장 주문을 엽니다. 400p 이익을 취하십시오.

일반적으로 모든 것이 정상이지만 지표가 반환하는 값에 세심한 주의를 기울일 것입니다.

 bool Val_max=false, Cl_dn=false, Val_min=false; 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int
   i, j, total,
   cnt,
   OrderBuy,
   OrderSell,
   Magic,
   Ticket,                                       // Номер ордера
   Total= 0 ,                                     // Количество ордеров в окне
   Tip=- 1 ;                                       // Тип выбран. ордера (B=0,S=1)      
   double
   Open_0,
   ask,
   bid,
   Price,                                       // Цена выбранного ордера
   SL,                                           // SL выбранного ордера
   TP,                                           // TP выбранного ордера
   Lot;                                         // Колич. лотов в выбран.ордере
   Open_0=Open[ 0 ];                             // Цена откр. формирующегося бара
   ask=Ask;                                     // Текущая цена покупки
   bid=Bid;                                     // Текущая цена продажи
   string
   Symb;                                         // Название финанс. инструмента
   Symb= Symbol ();                               // Название фин.инстр.
double Value_max= 1.0000 ;
double Value_min= 0.9980 ;
double Open_1= Open[ 1 ];
double Close_1= Close[ 1 ];
//----

//--------------------------------------------------------------- 4 --

double Val= iCustom ( NULL , 0 , "HMR MULTI Indicator" , 0 , 0 );   
if (Val >= Value_max) Val_max=true;                   // 
if (Open_1 > Close_1 && Val_max==true) Cl_dn=true;
if (Val <= Value_min && Cl_dn==true) Val_min=true;
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0 ; j < OrdersTotal (); j++)
    {
     OrderSelect (j, SELECT_BY_POS, MODE_TRADES);
     if ( OrderSymbol () == Symbol ())
      {
       if ( OrderType () == OP_SELL) return ( 0 );
      }
    }

   OrderSend ( Symbol (),OP_SELL, 0.1 , NormalizeDouble (Bid, Digits ), 2 ,Bid+ 400 * Point ,Bid- 400 * Point , "" , 3 , Red );   // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return ( 0 );
  }
 
splxgf :

일반적으로 모든 것이 정상이지만 지표가 반환하는 값에 세심한 주의를 기울일 것입니다.


경고 표시기 값을 통해 실시간 모드에서 시도했지만 메시지가 정상적으로 표시되었습니다.

 double Val= iCustom ( NULL , 0 , "HMR MULTI Indicator" , 0 , 0 );   
if (Val >= Value_max)
{
Alert ( "Значение индикатора >= 1.0000" );
}
값이 1.0000에 도달하면 각 눈금 "지표 값 >= 1.0000" 이라는 메시지가 표시되었습니다.
 
kolyango :


표시기의 경보 값을 통해 실시간 모드에서 시도했지만 메시지가 정상적으로 표시되었습니다.

그리고 테스터가 좋아하지 않는 것은 경고를 추가 하고 로그를 살펴봐야 합니다.
 
splxgf :
그리고 테스터가 좋아하지 않는 것은 경고를 추가하고 로그를 살펴봐야 합니다.

그럼 코드가 맞나요?
 

이것은 무엇을 의미 하는가?

2011.12.06 01:07:55 HMR MULTI 지표 EURUSD,M15: 제거됨

2011.12.06 01:07:57 TestGenerator: 일치하지 않는 데이터 오류(2011.12.01 00:00에서 볼륨 제한 603 초과)

2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI 표시자 EURUSD,M15: ObjectCreate 함수 에 대해 알 수 없는 하위 창 번호 -1


 
kolyango :

그리고 이것은 무엇을 의미합니까?

2011.12.06 01:07:55 HMR MULTI 지표 EURUSD,M15: 제거됨

2011.12.06 01:07:57 TestGenerator: 일치하지 않는 데이터 오류(2011.12.01 00:00에서 볼륨 제한 603 초과)

2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI 표시자 EURUSD,M15: ObjectCreate 함수에 대해 알 수 없는 하위 창 번호 -1


두 가지 오류가 있는 것 같습니다.
1. 인터넷에서 MT4의 연결을 끊고 기록 데이터를 가져와야 할 수도 있습니다.
2. 코드 확인이 필요합니다.

 
chief2000 :
두 가지 오류가 있는 것 같습니다.
1. 인터넷에서 MT4의 연결을 끊고 기록 데이터를 가져와야 할 수도 있습니다.
2. 코드 확인이 필요합니다.

... 표시기.

 int start(){
   double Val= iCustom ( NULL , 0 , "HMR MULTI Indicator" , 0 , 0 );   
   Alert (Val);
}

빈 어드바이저로 "포크 포크" 방법을 시도하십시오.

ObjectCreate가 하위 창을 찾는 표시기를 확인하십시오(또는 왜 IF TESTING 또는 OPTIMIZING을 그리는지).

 if ( IsTesting ()|| IsOptimization ())флаг_Канады_не_рисовать_obj=true;          //проверяем надо ли рисовать (в ините ему место через статик переменную)
if (!флаг_Канады_не_рисовать_obj){                                           //запрет отрисовки объектов ели оптимизация или тестирование
ObjectCreate (........................);
}
 
granit77 :
즉, 매개변수를 전달하지 않으면 다음을 수행합니다.

답변 감사합니다!
 

안녕하세요!

"Instrument"(_OrderSymbol) 매개변수를 사용하여 EA가 파일에 반복을 쓰지 못하도록 하는 방법을 알려주세요. https://forum.mql4.com/en/5814 배열에서 반복이 제거되는 방법을 포럼에서 보았지만 내 상황에 적용하는 방법을 알지 못했습니다. 그리고 반복하면 한 사이클에서도 200개의 동일한 줄을 파일에 찍기 시작합니다.

 void TimeStr6() { 
   int i,handle,_ordertype;
   double _openprice,_orderLots,_OrderProfit;
   string _orderspread,_orderbalance,_OrderSymbol,_orderOpenTime,_orderOpenTime1;
   string tekTime= TimeToStr (CurTime(),TIME_DATE)+ "_" ;
   string path=tekTime+ "Оптимальный.csv" ;
//---------------------------
    handle= FileOpen (path, FILE_READ | FILE_WRITE );
     if (handle> 0 ){
       FileWrite (handle, "Дата" , "Время" , "Инструмент" , "Баланс оптимальный" ); 
       _orderOpenTime= TimeToStr ( OrderOpenTime (),TIME_DATE);
       _orderOpenTime1= TimeToStr ( OrderOpenTime (),TIME_SECONDS);
       _OrderSymbol=SymbolMax[nnnn];
       _orderbalance= DoubleToStr (StartBalance, 0 );
       FileSeek (handle, 0 , SEEK_END );
       FileWrite (handle,_orderOpenTime,_orderOpenTime1,_OrderSymbol,_orderbalance);
       FileClose (handle);
     }
   return ;
}