void flatline(string nm,datetime t1,double p1,datetime t2,double p2,color clr, int W){
ObjectDelete(nm);// это не обязательно.ObjectCreate(nm, OBJ_TREND, 0,0,0,0,0);
ObjectSet(nm, OBJPROP_PRICE1,p1);
ObjectSet(nm, OBJPROP_TIME1,t1);
ObjectSet(nm, OBJPROP_PRICE2,p2);
ObjectSet(nm, OBJPROP_TIME2,t2);
ObjectSet(nm, OBJPROP_COLOR, clr);
ObjectSet(nm, OBJPROP_STYLE,0);
ObjectSet(nm, OBJPROP_RAY,false);
ObjectSet(nm, OBJPROP_WIDTH,W);
ObjectSet(nm, OBJPROP_BACK, true);
WindowRedraw();// если обновлять на каждом тике, лучше поставить в самом конце стартаreturn;
}
しかし、そう簡単にはいかないことがわかりました。名前に数字を付けると、3行(例えば)作成されますが、どこにも移動しません:( 閉ループを行い、毎回新しい数字を割り当てなければならないことが判明しましたが、ここでは、割り当てと同じ状況になっています。
タイムライン名。ひどいもんだ...。
この指標を見てください
頭にもっていく
みんな助けて。
問題はこれ、自作のグラフィカルなインジケータがあるのですが、ある時点が来たときに、仮に現在時刻が
if ((k>=15 && k<16) || (Hour()>=15)) // где k- по прошлым дням (для рисования не только в одном дне, но и по всей истоии)
昔の取引セッションで極限値を描くはずなのですが(今どこで取引しているか判断するのに便利です)、タイムフレームを前後に切り替えた場合のみ、インジケータがチャートを描かないのが難点です・・・。
以下は、描画コードの一部です。
if (Close[iHighest(NULL,0,MODE_CLOSE,8*p_t,i-15*p_t)]> Open[iHighest(NULL,0,MODE_OPEN,8*p_t,i-15*p_t)])
{
max_eu=Close[iHighest(NULL,0,MODE_CLOSE,8*p_t,i-15*p_t)];
Name="max2";
ObjectCreate(Name,OBJ_TREND,0,Time[iHighest(NULL,0,MODE_OPEN,8*p_t,i-15*p_t)],max_eu,Time[i]+l,max_eu);
ObjectSet(Name, OBJPROP_COLOR, Navy);
ObjectSet(Name,OBJPROP_RAY,false);
ObjectSet(Name, OBJPROP_TIMEFRAMES, OBJ_PERIOD_H1 | OBJ_PERIOD_M30| OBJ_PERIOD_M15 | OBJ_PERIOD_M5);
ObjectSet(Name, OBJPROP_WIDTH, 1);
Label="надпись2";
ObjectCreate(Label,OBJ_TEXT,0,Time[i]+l,max_eu);
ObjectSetText(Label,"Max Европа ", 8, "Arial", Navy);
ObjectSet(Label, OBJPROP_TIMEFRAMES, OBJ_PERIOD_H1 | OBJ_PERIOD_M30| OBJ_PERIOD_M15 | OBJ_PERIOD_M5);
WindowRedraw();
}
混乱してるんだ...
DOCTORS:
手づくり
混乱してるんだ...
しょうがない
解くには、if(...)の後にPrint()を入れて、条件が含まれているかどうかまで確認します。統計を取るための同様のプログラムがあれば教えてください。
}線を描くための機能コード。ご対応いただいた皆様、本当にありがとうございました。
アラート(「強気バーの数 = ", vverh, " - ", vverh/(Konec/100), " % " )が表示されます。
vverh/(Konec/100)式でカンマのない整数が表示されるのですが、なぜか教えてください。小数点以下は4桁目まであるはずなのに、そのまま整数で出てしまう。=(
Alert ("ゼロバーの数 = ", nul, " - ", DoubleToStr(nul/(Konec/100),2), " % " ); この式もうまくいきません。
アラート(「強気バーの数 = ", vverh, " - ", vverh/(Konec/100), " % " )が表示されます。
vverh/(Konec/100)式でカンマのない整数が表示されるのですが、なぜか教えてください。カンマの後は4桁目までの数字になるはずですが、整数が表示されます。=(