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

 
Qra:

皆さん、ごきげんよう。

最初のボットを書いているところですが、同時にMQLにも慣れてきました。テスト中に以下のような問題が発生しました。

OP_BUYSTOP注文は、チャートから判断すると目標値には達していないが、注文を出した直後に発動される(下図参照)

時間タイプご注文ボリューム価格S / LT / P利益バランス
12011.09.19 02:10買い取り停止10.0176.93576.73577.135
22011.09.19 02:10買う10.0176.93576.73577.135

USDJPY,M5(ビジュアル)

日付 2011.09.19

時間 02:15

オープン 76.903

76.909

76.890

閉じる 76.890

66

全てのダニを検査しています。

OP_BUYSTOPオーダーを正しく理解していないのかもしれません。価格が一定の値を超えたら買うこと、ですね。

以下は、注文を出すソースコードの一部です。

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);

皆さん、本当にありがとうございました。

ローソク足チャートでは、すべての価格はBidで、買い注文は Askの価格で執行されます。
 
PapaYozh:
ローソク足チャートでは、すべての価格はBidで、買い注文はAskの価格で執行されます。

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

 
みなさん、こんにちは。

保留中の水平線のレベルが現在の価格によって破られた場合、その水平線を削除したいのですが。別の言い方をすれば、OBJ_HLINEが 作成された後に、すでにレベルを超えていたり、「再ネゴシエーション」されている場合です。

ロールさんには感謝しています。レベルを既知の周期で維持する条件を正しく追跡する方法を教えていただけませんか?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

こんにちは!よろしくお願いします。

このスクリプトでは、なぜエクセルのデータが列として表示されないのかが理解できません。

エクセルで実行すると、テーブルのヘッダがあるだけで、データがない。

デリミタがエクセルで認識されない理由を教えてください。

ファイル:
writefile.mq4  3 kb
 

プログラミングを始めたばかりなので、いろいろと疑問が生じますが、よろしくお願いします

NewScriptというスクリプトを書きました。このスクリプトは、OHLCの価格をチャート上にバー単位で表示するという簡単な機能を実行します...

質問ですが、もしBARSが現在のチャートのバーの数そのものなら、なぜ私のEAのログでは画面上のバーの数(約200)が表示されるのに、私のログでは2000以上なのでしょうか?

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

ファイル:
 
Vinin:


小幅修正


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

すみません、機能がよくわからないのですが......。

 
CLAIN:



最も簡単なオプション

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

こんにちは。

EAを しばらく停止さ せるためのコードを書くのを手伝ってもらえますか?

こんな感じでコードを書きました。

int init() {
string OrderStop="OrderStop "+ Symbol();
OrderSig =GlobalVariableGet(OrderStop);
// Print (OrderSig);

return (0);
}.

int deinit() {
return (0);
}.

int start() {
string OrderStop="OrderStop "+ Symbol();
OrderSig = GlobalVariableGet(OrderStop);

if (OrderSig==1)return(0)です。

else {

EA本体(コード)

}

return(0)です。

}

トレイラーではこのコードは動作しますが、コンパイルやTerminalの再実行では動作しません。

EAが動作(ポジションを開く)し始め、その後取引が行われない。

それは何でしょう?

もしくは他の選択肢を教えてください。

 
alega:

あるいは別の選択肢を提案する。

fを使用します。

  Sleep (3000);
 
ありがとうございます、試してみます。