[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 404

 
splxgf:
最初のオプションは、オーダーを開く前に配置するのがベターです。
ありがとうございました。すべてうまくいく :)
 
kolyango:

この2つの条件は、1時間後や2時間後、3時間後など、すぐには続かないこともあるので、1.0000になったら、この条件を毎ティック確認せず、1本が下落で終了するまで待ち、その後、この2つの条件を毎ティック確認せず、0.9980または同等になるまで待つようにする必要があります。すべての条件が満たされ次第、0.1ロットの売り注文を成行で出し、損切りは400ペンス、利食いは400ペンスとします。

一般的には問題ないのですが、インジケータが返す値には細心の注意を払いたいと思います。

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:

全体的には問題ないのですが、インジケータが返す値には細心の注意を払いたいと思います。


Alert経由でリアルタイムに試したところ、正常に表示されました。

double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);   
if (Val >= Value_max)
{
Alert("Значение индикатора >= 1.0000");
}
1.0000に なると、 1ティック ごとに「Indicator value >= 1.0000」と表示されるようになった。
 
kolyango:


Alertでインジケーターのリアルタイム値を試したところ、正常に表示された。

それから、テスターが嫌がることは、アラートを付けて ログを見る必要があります。
 
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 Indicator 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 Indicator EURUSD,M15: unknown subwindow number -1 for ObjectCreate function


2つのエラーがあるようです。
1.おそらく、MT4をインターネットから切断し、ヒストリカルデータをインポート する必要があります。
2.コードを確認する必要があります。

 
chief2000:
そこには2つの間違いがあるようです。
1.MT4をインターネットから切断し、ヒストリカルデータをインポートする必要がある場合があります。
2.コードを確認する必要があります。

...インジケータを使用します。

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

空のExpert Advisorで「直感」法を試してみてください。

ObjectCreateが そのサブウィンドウを見つけることをインジケータで確認する(または、それをテストまたはOPTIMIZEする場合、それを描画する理由)。

if(IsTesting()||IsOptimization())флаг_Канады_не_рисовать_obj=true;          //проверяем надо ли рисовать (в ините ему место через статик переменную)
if(!флаг_Канады_не_рисовать_obj){                                           //запрет отрисовки объектов ели оптимизация или тестирование
ObjectCreate(........................);
}
 
granit77:
つまり、パラメータ転送がない場合、です。

回答ありがとうございました。
 

こんにちは。

Expert Advisorの「Tool」パラメータ(_OrderSymbol)を使って、ファイルに繰り返し書き込まないようにする方法を教えてください。配列の繰り返しhttps://forum.mql4.com/ru/5814 を削除する方法をフォーラムで見ましたが、私の状況に適用する方法が分かりません。また、リピートの場合、1回のループでも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;
}