//+------------------------------------------------------------------+//| Get value of buffers for the iATR |//+------------------------------------------------------------------+double iATRGet(constint index)
{
double ATR[1];
//--- reset error code ResetLastError();
//--- fill a part of the iATR array with values from the indicator buffer that has 0 index if(CopyBuffer(handle_iATR,0,index,1,ATR)<0)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(0.0);
}
return(ATR[0]);
}
//+------------------------------------------------------------------+//| Get value of buffers for the iATR in the array |//+------------------------------------------------------------------+bool iATRGetArray(constint start_pos,constint count,double &arr_buffer[])
{
bool result=true;
if(!ArrayIsDynamic(arr_buffer))
{
Print("This a no dynamic array!");
return(false);
}
ArrayFree(arr_buffer);
int buffer_num=0; // indicator buffer number //--- reset error code ResetLastError();
//--- fill a part of the iATRBuffer array with values from the indicator buffer that has 0 index int copied=CopyBuffer(handle_iATR,buffer_num,start_pos,count,arr_buffer);
if(copied!=count)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(false);
}
//---return(result);
}
//--- Используя функцию CopyBuffer, мы копируем по 1 последних новых значения индикаторов в динамические массивыif(CopyBuffer(Handle_4P72_L0_1,0,0,200,line1_L0)<0// || CopyBuffer(Handle_4P72_L0_2,0,0,1,line2_L0)<0 || CopyBuffer(SMA_Handle_00,0,0,1,SMA_L0)<0
|| CopyBuffer(Handle_4P72_L1_1,0,0,200,line1_L1)<0// || CopyBuffer(Handle_4P72_L1_2,0,0,1,line2_L1)<0 || CopyBuffer(SMA_Handle_01,0,0,1,SMA_L1)<0
|| CopyBuffer(Handle_4P72_L2_1,0,0,200,line1_L2)<0// || CopyBuffer(Handle_4P72_L2_2,0,0,1,line2_L2)<0 || CopyBuffer(SMA_Handle_02,0,0,1,SMA_L2)<0
|| CopyTime(_Symbol,_Period,0,1,New_Time)<0)
1つの指標から3つの時間軸で6つのハンドルがあります。
そして、取るべき価値のオフセットが、すでに定められている。1つ1つの価値をコピーしていったのです。
1つのインジケータの3つのハンドルを3つのタイムフレームで使用し、そこから可能なシフト間隔をコピーすることで混乱したのです。
一度に複数のバーからインジケータ値を取得する必要がある場合、値を配列にコピーする必要があります。iATRを例にして。
一度に複数のバーからインジケータ値を受け取りたい場合、値を配列にコピーする必要があります。iATRを例にして。
そうですね、コピーした配列を動的なままにしていたのが間違いだったようです。:(
確認します。
そう、コピーした配列を動的なままにしておいたのが間違いだったようです。:(
確認します。
動的配列にしか コピーしない!また、コピーする前に、強制的にArrayFreeに する。静的配列に問題があった。それ以来、動的なものだけ。
ダイナミックアレイにしか コピーしない!そして、コピーする前に、強制的にArrayFreeして います。静的配列の問題があった。それ以来、動的なものだけ。
了解です。エラーはここにない。
行かなかったExpert Advisorはこちらです。
了解です。間違いはここではない。
行かなかった専門家はこちらです。
ERROR:コピーしているのは1つの値ですか、それとも2つ ですか?
ERROR: コピーするのは1つの値ですか、それとも2つの 値ですか?
このEAでは(日付が違いますが)、3つのハンデと200の値を試しました。
もし、あなたがMT5用のロボットを作る準備ができているなら、私はあなたにアイデアを与えるために始めることができます。TS-Labで条件をシミュレートしていますが、MT5でオートモードで取引したいです。
テストに問題がなければ、取引ロジックを記載します。第一弾は、おそらくこれでしょう。
#55
まずは小分けにする。
現在のローソク足が閉じる前に「シグナルローソク足が閉じるまでの秒 数」があると同時に、「ローソク 足の平均サイズを計算するためのローソク足の 数」のローソク足の平均サイズを計算します。現在のローソク足が「現在のローソク足:超過体サイズ、 パーセント」で平均サイズを超えた場合 - ボリューム「ロット」でポジションを開き、「保留中の指値レベル:現在のローソクの高さのパーセント」の距離で始値からボリューム「ロット」*「乗算係数」でシグナルローソクの高さのパーセント単位で指値を行います。
これでよいのでしょうか?
そこで作ったものを思い出すのに時間が必要です :)風通しが悪いので風邪を引きそうです。夏に熱を出して風邪を引くなんて、腹が立つと同時に笑えますね :)
今まで何をしていたかを思い出すのに時間がかかる :)そして、まるでわざとかのように隙間風が吹き、結果的に風邪をひいてしまうのです。夏に熱を出したり、風邪をひいたりするのは、面白いし、腹も立ちますね :)
気分が良くなる。
ダイナミックアレイにしか コピーしない!そして、コピーする前に、強制的にArrayFreeして います。静的配列の問題があった。それ以来、動的なものだけ。
おいおい...静止画のものも問題ないです。話の内容にもよりますが。バッファを管理したり、エラーをキャッチしたりする必要がないのであれば、動的なもののほうがよいでしょう。しかし、フクロウの場合、実は違いはないのです。