[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 123

 
KabrGvin:

飲み屋がない週末に影響を受けない方法を教えてください。棒グラフの数値が計算式で算出されているとします。

nt i1=(Time[0]-t1)/60/Period();

int i2=(Time[0]-t2)/60/Period();

そして、i1とi2の間のバーの数は、両者の差に等しい。すなわち、バーの本数 i1-i2。しかし、i1 と i2 が週末の間にある場合、バーの数は土曜日と日曜日に存在しないバーを考慮に入れて計算されることになります。どうしたらこの 状況から抜け出せるのか?

ディミトリさん、こんにちは。


皆さん、ありがとうございました。自分で解決しました。



 

皆さん!2.643789を四捨五入して整数にする方法を教えてください。 よろしければリンクも教えてください。

教科書やドキュメントに載っていない、検索しても何も出てこない、探す場所を間違えている。

 
eddy:

alsu さん、howを全部埋めてください。)

iはBars-counted+2に等しいのに、どうしてマイナスになるのでしょうか?

              for(i=Bars; i>=0; i--) Rel[i]=pr(Close[i])-pr(Close[i+1]);
     if(teni) for(i=Bars; i>=0; i--) {Rhi[i]=pr(High[i])-pr(Close[i+1]);
                                      Rlo[i]=pr(Low[i])-pr(Close[i+1]);
                                                Rlo[i]=MathMin(Rlo[i],0);
                                                Rhi[i]=MathMax(Rhi[i],0);}

このコードは,毎ティック,すなわち,毎ティックの到着時に実行されます。 配列Relのすべての要素,. をBarsから0まで、何らかの値を割り当てる。(ちなみに,Barsという数字を持つ要素はなく,配列の最後のインデックスはBars-1です.)

さて、次は図面以外の部分です。

どこにエラーがあるのか調べる必要があります。まず、iインデックスがどのような値をとり、rsi()関数がどのような出力をするかを見てみることを提案します。MEにはデバッガがないので、echo、つまりPrint()を使うしかありません。

 
gheka:

みんな! 2.643789を四捨五入して整数にするにはどうしたらいい?

教科書やドキュメントに載っていない、検索しても何も出てこない、探す場所を間違えている。

https://docs.mql4.com/ru/math/MathRound

double MathRound( double 値)

この関数は、指定された数値の小数点以下を四捨五入した値を返す。


double y=MathRound(2.8);
Print("2.8を",yに丸める);
y=MathRound(2.4)。
Print("四捨五入して-2.4",y);
//出力:2.8 を 3 に丸める
//2.4を-2へ丸める

 
alsu:

...各タックについて Relの全要素、... をBarsから0まで、何らかの値を割り当てる。

さて、描画以外の部分についてです。

どこにエラーがあるのか調べる必要があります。まず、i インデックスがどのような値をとるのか、そしてそのときの rsi() 関数がどのような出力をするのかを見てみることをお勧めします。MEにはデバッガがないので、echo、すなわちPrint()を使うことができます。

"Bars to zero "はすでに修正済み)いつも読みながら修正しています。

いまは無描画)

Bars-counted+2がマイナスになることはありますか?

 

すべての未決済注文を修正するにはどうすればよいですか?

なぜか1つだけ注文を変更する

以下は私のコードです。

 tot=OrdersTotal();
if(tot>0)
{ if(OO_11(0)==false) <---- ОО_11() он проверяет есть ли стоп
{ int k=OrdersTotal();
for(int a=0;a<=k;a++)
{ if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_SELL)
{ if(OrderMagicNumber()==0)
{
int tik=OrderTicket();
OrderModify(tik,Ask,Ask+0.01000,0,0,0);
}
}
}
}
}
}
マジコンなしで10〜50の注文を開いているのですが、1つの注文にしかストップロスが 設定されないのですが、何が悪いのか教えてください。
 
eddy:

"Bars to zero "は訂正済み)いつも読んで訂正しているのですが。

いまは無描画)

Bars-counted+2がマイナスになることはあるのでしょうか?

オンザフライでは、いいえ、それはできません。でも、やはり考えるより確認したほうが早い。プリントをあちこちに貼って、ソフトの動作を確認するのが理想的です。
 
gheka:

すべての未決済注文を修正するにはどうすればよいですか?

なぜか1つだけ注文を変更する

以下は私のコードです。

マジックオープンなしで10-50のオープンオーダーを持っていますが、1つのオーダーにしかストップロスが出ません、何が問題なのか教えてください。

1) 変数 k は変数 tot を繰り返す

2) a<=kは誤り、a<kを訂正する。

3)オーダーの修正に関するログは?

 
alsu:

1) 変数kは変数totを繰り返す

2) a<=kは誤り、a<kを訂正します。

3) 注文変更に関するログの内容を教えてください。

ログブックには何の情報もなく、オーダーの開始だけが表示され、それ以外は何も表示されない、やはりどちらにも効果はない
 
alsu:

1) 変数kは変数totを繰り返す

2) a<=kは誤り、a<kを訂正します。

3) 注文変更に関するログの内容を教えてください。

今は動いています)ありがとうございました。