//+------------------------------------------------------------------+//| Создаем трендовую линию на чарте |//+------------------------------------------------------------------+void DrawTrendLine(conststring id,// Строковый идентификаторconstdatetime t1, // Время первой точки линииconstdatetime t2, // Время второй точки линииconstdouble price,// Цена обеих точек линииconstcolor clr // Цвет линии
)
{
//--- Формируем имя линииconststring name=_prefix+id+TimeToString(t1)+"_"+TimeToString(t2);
//--- Сбрасываем код последней ошибкиResetLastError();
//---//Print( __FUNCTION__,": Создаем тренд-линию "+name+": t1 = "+TimeToString( t1 )+", t2 = "+TimeToString( t2 )+", price = "+DoubleToString( price ) );//--- Создаем объект, проверяем созданиеif(ObjectCreate(0,name,OBJ_TREND,0,t1,price,t2,price)) // Если объект создан
{
//--- Меняем свойства линийObjectSetInteger(0,name,OBJPROP_COLOR,clr);
ObjectSetInteger(0,name,OBJPROP_BACK,true);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
ObjectSetInteger(0,name,OBJPROP_RAY_LEFT,false);
ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
}
else// Если объект не созданPrint(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(t1)+", t2 = "+TimeToString(t2)+", price = "+DoubleToString(price));
}
//+------------------------------------------------------------------+//| Создаем вертикальную линию на чарте |//+------------------------------------------------------------------+void DrawVLine( conststring id, // Строковый идентификаторconstdatetime time // Время
)
{
//--- Формируем имя линииconststring name=_prefix+id+TimeToString(time);
//--- Сбрасываем код последней ошибкиResetLastError();
//--- Создаем объект, проверяем созданиеif(ObjectCreate(0,name,OBJ_VLINE,0,time,0)) // Если объект создан
{
//--- Меняем свойства линийObjectSetInteger(0,name,OBJPROP_COLOR,_vLineClr);
ObjectSetInteger(0,name,OBJPROP_BACK,true);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
}
else// Если объект не созданPrint(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(time));
}
すでに存在するロジックが破綻している。
こっちの方が面白い。
コールを変更しなければ、コメントは以前と同様に上書きされます。
明示的にNULLを渡すと、既存のコメントをコピーします。
すでにある論理を破っているのです。
そんな理屈は誰も使わない。インチキだからなおさらだ。
すでに存在するロジックが破綻している。
こっちの方が面白い。
課題を変更しない場合、コメントは従来通り上書きされます。
明示的に NULL を渡すと、既存のコメントをコピーします。
ぜひご覧ください。
が、10回(!!)決済 しようとします :( デバッグ(Netting, Real, Opening)の際にも、そのような状況がありました。
ハイライトされた行は、ポジションを閉じるための2回目の試みです :)ログを見ればわかるように、完全に成功したわけではありません。
今のところ、私はそれを使っています。
コードでポジションを閉じる試みはすでに1回行われています。ポジションクローズの事実をユーザーがコントロールするのが正しいと思われます。10回の試行錯誤は万能ではない
すでに存在するロジックが破綻している。
こっちの方が面白い。
コールを変更しなければ、コメントは以前と同様に上書きされます。
明示的にNULLを渡すと、既存のコメントをコピーします。
あるいは、もっと便利になるかもしれません。
そして、それを必要とする人は、空の値で上書きします。デフォルト値がコピーされます。
開発者の皆様へ
端末は1983年に更新された。テスターでグラフィカルなオブジェクトを作成 する際に、おかしなエラーが発生します(縦線とトレンドラインを作成しています)。1981年当時は何もかもが普通だった。
今はエラー4001が出ます。
クリエーションコード
開発者の方に質問です。
標準ライブラリのmytrade.PositionClose(conststring symbol,ulongdeviation=ULONG_MAX) 関数には、コメントパラメータがありません。
見落としでしょうか?
ここに書くのがより適切だと思われます。
https://www.mql5.com/ru/forum/302709#comment_10570043