初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 419

 
-Aleks-:
2年 - テスターで :)まあ、デモで1年動いてるんですけどね...。外部クラスの関係で接続しなければならない時に、そこそこのバグが...。そして今、そのようなバグがあり、どう修正したらいいのかわからない。とりあえず配列のサイズを1桁増やすことにする。なぜ、グラフィックバッファのような自動サイズがないのでしょうか?

こんな風に試してみてください。

配列 OrderBU[1]を初期化 する。

まず配列のサイズを 大きくし ( ArrayResize(OrderBU,NorderBU+1) ) 、次に OrderBU[NorderBU]=OrderTicket();NorderBU++ を実行します。

 
new-rena:

こんな風に試してみてください。

配列 OrderBU[1]を初期化 する。

まず配列のサイズを大きくし ( ArrayResize(OrderBU,NorderBU+1) ) 、次に OrderBU[NorderBU]=OrderTicket();NorderBU++ を実行します。

ありがとうございます。暇なときに実験してみます。
 
次のようなことをコードで実装するにはどうしたらよいか、アドバイスをお願いします。
基本変数Aがあり、それがゼロより小さい場合、さらに5つの変数を使用します - 値は、インジケータ呼び出し 関数から割り当てられます - iCustom。
A変数の上下にある値を見つけ、2つのグループから最大、最小、平均値を定義します。
配列を使用する必要があると思うのですが、方法がよくわかりません。
 

この点について、アドバイスをお願いします。

例えば、チャートにウィリアムズ・パーセンテージ・レンジ(%R)インディケータを表示し、ナビゲータからオンバランス・ボリューム(OBV)インディケータをそのウィンドウにドラッグするとします。

https://charts.mql5.com/8/675/xauusd-h4-metaquotes-software-corp.png

Rは0~100%の範囲で動作しますが、OBVは特定の基準がありません。

OBVが%Rのウィンドウにあるとき、-20%や-80%を超えていることを視覚的に確認することができます。

EAでOBVを-20%以上または-80%以下にするにはどうしたらいいですか?

カスタムインジケータのOBVを0~100%の範囲でバインドするには?それ(範囲)に正規化する?どうすればいいのでしょうか。

OBVを%Rに正規化する必要はない(絵が違ってくる)ことは理解した。

初歩的なことかもしれませんが、私が遭遇したことがないだけです。

 
-Aleks-:
次のようなことをコードで実装するにはどうしたらよいか、アドバイスをお願いします。
基本変数Aがあり、それがゼロより小さい場合、さらに5つの変数を使用します - 値は、インジケータ呼び出し 関数から割り当てられます - iCustom。
A変数の上下にある値を見つけ、2つのグループから最大、最小、平均値を定義します。
配列を使えばいいと思うのですが、やり方がよくわかりません。

if (p1>p2&&p1>p3) , if (p2>p1&&p2>p3) , if (p3>p2&&p3>p1)

私はこの方法でやっています。

 

最初のロットはユーザーによって設定され、その後、このパラメータはアドレス指定できなくなり、EAはそれ自体で動作し、損失の場合には、プログラム(または外部変数)で指定された最大ロットで上昇し、利益の場合には、指定した量だけ減少します。

Init "にパラメータを書くと、EAが外部変数lotにアクセスしなくなるのでは?

とか、どうすればいいのか?

これは近似的な表現です。

 
こんにちは。EAでニュースデータを使用する方法を教えてください。このためにインジケータが必要ですか?それともEAが自分で重要なニュースを見つけることができますか?
 
Leanid Aladzyeu:

if (p1>p2&&p1>p3) , if (p2>p1&&p2>p3) , if (p3>p2&&p3>p1)

そうしています。

特にパラメータが多い場合は不便です...。

配列による解法は面白いですね。特に、変数の値の総数を平均化したときに、最も近い値を求める方法は興味深い。

 
first_may:

こんばんは。天底と金的のクロスで簡単なEAを書こうとして います。以下はそのコードです。

void OnTick()

void OnTick()

{

TradeSignal_20()。

}


int TradeSignal_20()

{

int sig=0;


if(h_ich==INVALID_HANDLE)

{

h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb)。

return(0)です。

}

さもなくば

{

if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE

if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE

if (!ArraySetAsSeries(ich1_buffer,true)) return(0);

if (!ArraySetAsSeries(ich2_buffer,true)) return(0);

}

//--- 状態を確認し、sig に値を設定する。

if(ich1_buffer[1]>ich2_buffer[1]) sig=1;

else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;

でなければ sig=0;

if (ich1_buffer[1]>ich2_buffer[1])

if (ich1_buffer[2]<ich2_buffer[2])

アラート(Symbol()+": purchase");

if (ich1_buffer[1]<ich2_buffer[1])

if (ich1_buffer[2]>ich2_buffer[2])

アラート(Symbol()+": Sale");

//--- リターン・トレード・シグナル

を返す(sig)。

}

//+------------------------------------------------------------------+

アラートが常に呼び出されるのではなく、一度だけ呼び出されるようにするにはどうしたらよいですか?

毎回のように実行するのではなく、必要に応じて実行してください。
 
Vasiliy Smirnov:
毎カチではなく、必要に応じて実行してください。
そして、どうあるべきなのか。新しいバーが 開いたら-、新しいバーのチェックを作る...。
理由: