ご訪問ありがとうございます。
元スーパー店員で不労所得生活を目論むひろしです。
前回
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
TrimPipsで「トレーリングストップ」使用時に
あなた:「おー、今のSTOPは〇〇か!」
と、チャート画面を見るだけで
明確にトレーリングストップの
値がわかります。
逆に、知らないと
せっかく、トレーリングストップを
設定していても
あなた:「ん? トレーリングストップしてんのか?」
と、MetaTraderの「取引」画面を確認したり
はてまた、TrimPipsの設定画面を見るハメになります。
そうならないためにも、今回の設定は
ぜひ、知っておいてください。
。。。
。。
あなた:「え? それ、いる?」
ひろし:「うーーーーーーーーーーーーん」
ちょっと微妙な機能ですが、
とりあえず、トレーリングストップの現在値を
チャート画面に表示するようにしました。
デフォルトはOFFなので、
普通に使っている分には変更ありません。
設定画面
まず、設定画面です。
新たに「トレーリングストップを画面に表示する」という項目を追加しました。
true:表示する
false:表示しない
です。
表示画面
そして「トレーリングストップを画面に表示する」がtrueの場合、
チャート画面右下に表示されます。
TSS:TrailStopShortの略
TSL:TrailStopLongの略
変更箇所
定義
定義にON,OFFの追加
1 2 3 4 |
input string Trailing_Stop = "==========================="; //===トレーリングストップ=== input bool input_Trailing_Stop = false; //トレーリングストップを設定する input int input_Trailing_Stop_Pips = 30; //PIPS input bool input_Trailing_Stop_Disp = false; //トレーリングストップを画面に表示する |
追加
OnTick()のループ内で、
トレーリングストップに逆指値の設定が
成功時にDrawStirng(逆指値表示ルーチン)を呼び出す。
OnTick()のループを出た後、1回の呼び出しで
現時点の逆指値を表示させようかと思ったが、
値を保持するのが地味にめんどい。
したがって、逆指値設定毎に表示させる。
*MT5,MT4xShort,Longの4箇所
1 2 3 4 5 6 7 8 9 10 11 |
if(modify_ret == false) // 注文変更拒否 { Sleep(10); // 10msec待ち errorcode = GetLastError(); // エラーコード取得 printf("注文変更拒否。エラーコード:%d" , errorcode); //printf("注文変更拒否。エラーコード:%d , 詳細:%s ", errorcode, ErrorDescription(errorcode)); } else // 決済注文約定 { ★ DrawString(DoubleToString(Max_Stop_Loss, digits), bOrderType); } |
逆指値表示ルーチン(新規追加)
逆指値設定ごとに呼び出されるので、
LongとShortの表示位置を分けて表示している
*とりあえず、表示位置、フォント、フォントサイズ、色は固定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void DrawString(string dspstr, bool bOrderType) { Print(__FUNCTION__, "dspstr=", dspstr); if(!input_Trailing_Stop_Disp) return; string obj_name,tempstrdsp; color tmp_color = input_DspPips_ColorRed; int npos; // if(ObjectFind(CHARTID, obj_name) < 0) //描画済み? { } //案 トレールストップ 100.123 100.123 //案 トレールストップ 0.12345 0.12345 //案 TS S:0.12345 L:0.12345 //案 TS 0.12345 0.12345 //案 TSS:0.12345 TSL:0.12345 if(bOrderType == #ifdef __MQL5__ POSITION_TYPE_BUY #else OP_BUY #endif ) { npos = 100; obj_name = "buy"; tempstrdsp = "TSL:" + dspstr; } else { npos = 200; //SELL 表示位置 obj_name = "sell"; tempstrdsp = "TSS:" + dspstr; } //オーダータイプ毎にユニークな名称にする obj_name = Str_dsppip + "Trail" + obj_name; // Print(obj_name); ObjectCreate(CHARTID, obj_name, // オブジェクト作成 OBJ_LABEL, // オブジェクトタイプ 0, // サブウインドウ番号 0, 0 ); ObjectSetString(CHARTID, obj_name, OBJPROP_TEXT, tempstrdsp); // 表示するテキスト ObjectSetString(CHARTID, obj_name, OBJPROP_FONT, "MSGothick"); // フォント ObjectSetInteger(CHARTID, obj_name, OBJPROP_COLOR, tmp_color); // 色設定 ObjectSetInteger(CHARTID, obj_name, OBJPROP_FONTSIZE, 11); // フォントサイズ ObjectSetInteger(CHARTID, obj_name, OBJPROP_XDISTANCE, npos); // X座標 ObjectSetInteger(CHARTID, obj_name, OBJPROP_YDISTANCE, 20); // Y座標 ObjectSetInteger(CHARTID, obj_name, OBJPROP_CORNER, CORNER_RIGHT_LOWER); // コーナーアンカー設定 ObjectSetInteger(CHARTID, obj_name, OBJPROP_BACK, false); // オブジェクトの背景表示設定 ObjectSetInteger(CHARTID, obj_name, OBJPROP_HIDDEN, true); // オブジェクトリスト表示設定 ObjectSetInteger(CHARTID, obj_name, OBJPROP_ZORDER, 0); // オブジェクトのチャートクリックイベント優先順位 // ObjectSetInteger(CHARTID, obj_name, OBJPROP_SELECTABLE, true); // オブジェクトの選択可否設定 // ObjectSetInteger(CHARTID, obj_name, OBJPROP_SELECTED, true); // オブジェクトの選択状態 // Print(__FUNCTION__, "pobj_name=", pobj_name," x=",nxpos," y=",100 + pips_y_pos * (input_DspPips_FontSize * 2 + 10)); } |
正直、この機能はいらなかったかもしれません。
「いらない」と思ったらコメントください。
「いる」思った場合も、コメントお待ちしています。
ダウンロードはこちらから
最後までご覧いただきありがとうございます。
つぎはこちら