MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 489

 

こんにちは。MT4用のEAを作りたい のですが、そのタスクの1つは、M1で1時間以内にフィボラインを引くことです。つまり、11.00になったら、10.00から10.59までの区間に、高値と安値に注目して線を引くことです。様々な方法を試し、最後の1つを掲載しました。レベルを描画するコードを短縮することはできるでしょう。 問題は、指定した範囲に線を描画しない ことです。

int timemin=TimeMinute(Time[59]==0);
int timehour=TimeHour(Time[1] && TimeMinute(Time[0]));
int timemin1=TimeMinute(Time[0]==0);
int timehour1=TimeHour(Time[1] && TimeMinute(Time[59]))である。

int max=iHighest(Symbol(,1,MODE_HIGH,60,timehour);
int min=iLowest(Symbol(,1,MODE_LOW,60,timehour);

double barup=(iOpen(Symbol(,60,1)>))iClose(Symbol(),60,1));
double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------新しい水準になる。

if (barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen).ObjectCreate(0, "FiboLevels",OBJPROP_COLOR,clrGreen);

}
if (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed).ObjectCreate(0, "FiboLevels",OBJPROP_COLOR,0,Time[max],Low[min],Time[timehour1],High[min]);

}
double f1=ObjectGet("FiboLevels",OBJPROP_PRICE1); //最初の価格を選択します
double f2=ObjectGet("FiboLevels",OBJPROP_PRICE2);//Select the second price and plots
double Diff=f2-f1;
string a11=DoubleToStr(f2-Diff*0.F2); string a11=DoubleToStr(f2-Diff*0.0,Digits);
文字列 a12=DoubleToStr(f2-Diff*0.236,Digits);
文字列 a13=DoubleToStr(f2-Diff*0.382,Digits);
文字列 a14=DoubleToStr(f2-Diff*0.50,Digits);
文字列 a15=DoubleToStr(f2-Diff*0.618,Digits);
文字列 a16=DoubleToStr(f2-Diff*1.0,Digits);

bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6);
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0); bool a1=ObjectSet("FiboLevels",OBJPROP_FiboLevELS,0)0);
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236);
bool a4=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.236); bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.382);
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50);
bool a6=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+4,0.618);
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVELs+5,1.0);

bool a111=ObjectSetFiboDescription("FiboLevels",0, "0.0%");
bool a122=ObjectSetFiboDescription("FiboLevels",1, "23.6%");
bool a133=ObjectSetFiboDescription("FiboLevels",2, "38.2%";
bool a144=ObjectSetFiboDescription("FiboLevels",3, "50.0%");
bool a155=ObjectSetFiboDescription("FiboLevels",4, "61.8%";
bool a166=ObjectSetFiboDescription("FiboLevels",5, "100.0%");

 
Georgy Sled:

こんにちは。MT4用のEAを作りたい のですが、そのタスクの1つは、M1で1時間以内にフィボラインを引くことです。つまり、11.00になったら10.00から10.59までの区間に、高値と安値に注目して線を引くことです。様々な方法を試し、最後の1つを掲載しました。レベルを描画するコードを短縮することはできるでしょう。 問題は、指定した範囲に線を描画しない ことです。

double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));

double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------新しいレベル

なら
{
WindowRedraw()。
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen)。

}
仮に
{
WindowRedraw()。
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]) とする。
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed)。

}

この方が短い? bool barup=... WindowRedraw()でも実行されます - ifを削除しました。

   ObjectDelete("FiboLevels"); //------Новый уровень
   WindowRedraw();

   if (iOpen(Symbol(),60,1)>iClose(Symbol(),60,1))
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
   }
   else
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
   }

もっと短くすることもできます...私のファイルを参照してください。

ファイル:
Proba.mq4  3 kb
 
Artyom Trishkin:

コードを正しく挿入してください。


さらに鮮明になりました。


正しいコードの貼り付け方を説明していただき、ありがとうございました)))))) 手伝っていただきました。(今日、私はアンインストールの方法を学んだ沸騰したサムスンのテレビを持っていますが、私はこのコードに対処することはできません(((
 
void fOrderOpen() {...
    if( iTime(Symbol(),PERIOD_M1,0)) {
     if((fMarketOrders(OP_BUY))) { ....{
int irvbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,NULL,12345,0,0); 

みんな、どうして私の注文は1ティック ごとに開くんだ?バーに集中する方法を教えてください。

 
Rustam Bikbulatov:

みんな、どうして私の注文は1ティック ごとに開くんだ?バーに集中する方法を教えてください。

ATSに記載された条件に従って、オープンのゴーサインを出すと、オープンになります。
この場合、いろいろな解決策があるんです。すべては、あなたにとって何がより適しているかによります。
価格が前回の注文からNポイント離れた場合にのみ、次の注文を出すべきと判断することができる。1つのバーに複数の注文を出すことはできません。などなど。
必要な条件を書き出し、テストに適用する。

 
Konstantin Nikitin:

ATSに記載された条件に従って、注文を開封する。
この場合、いろいろな解決策があるんです。すべては、あなたにとって何がより適しているかによります。
価格が前回の注文からNポイント離れた場合にのみ、次の注文を出すべきと判断することができる。1つのバーに複数の注文を出すことはできません。などなど。
必要な条件を書き出し、テストに適用する。

その代わりif( iTime(Symbol(),PERIOD_M1,0)){1本のバーで注文を出すにはどう書けばいいのでしょうか?

 
Rustam Bikbulatov: みんな、どうして私の注文は1ティック ごとに開くんだ?鉄棒に集中するためのアドバイスがあれば教えてください。

この質問は何度もされ、それに応じて何度も回答されてきた。検索を使用する、例えば、ここ

 
STARIJ:

この質問は何度もされ、それに応じて何度も回答されてきた。検索を使用する、例えば、ここ

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

 

こんにちは。


ある計算をするEAがあるのですが。さまざまな数学演算、配列、ループを使用します。その結果をファイルに保存 します。すべてのアクションを実行した後に、すべてを最初からやり直さなければならないのです。一度すべての計算を行った後、2度目は何もせずにハングアップしています。新しい計算を始める前に、変数をゼロにしたり、配列をクリアしたりする必要があるかどうか、アドバイスをお願いします。

 
Kot:

こんにちは。


ある計算をするEAがあるのですが。さまざまな数学演算、配列、ループを使用します。その結果をファイルに保存 します。すべてのアクションを実行した後に、すべてを最初からやり直さなければならないのです。一度すべての計算を行った後、2度目は何もせずにハングアップしています。新しい計算を始める前に、変数をゼロにしたり、配列をクリアしたりする必要があるかどうか、アドバイスをお願いします。

必ず役に立ちます。そして、このスレッドには、そのような専門家はいません。