externstring с9="------ Трейлингстоп ------";
externint TrailingStop=20; //Трейлинг-Стоп рыночного ордера. Если = 0 или то тарла нетexternint TrailingStep=5; //Шаг трала рыночного ордераexternbool WaitProfit = true; // Если true, то ждать профит = значению TrailingStop и только потом начинать тралить//Иначе, трейлинговать не дожидаясь положительного профита
extern string с10=" -------- Прочие параметры -------------";
extern int MAGIC=123456;//У ордеров открытых вручную MAGIC=0
extern int Proskalz=10;//Проскальзывание
皆さん、こんにちは...。
MetaTrader4の履歴ファイルへのパスを構築する方法を教えていただけませんか?c:\program files, METARATOR 4 INDEXHISTORY APEX CLASSICみたいな?
ありがとうございます、sergeev さん。
Print("Terminal path: ", TerminalPath() + "\\history\\" + AccountServer() + "\\");
この行は、エディタの色がおかしくても、正しいパスを出力します...。メモ帳にコードを書いたほうがいいんじゃない?冗談です。
みなさん、こんばんは。
セルゲイ・コバレフ氏のチュートリアルで、トレーリングストップという専門家を見つけました。MetaEditorにコピーし、コンパイルしましたが、プログラムが動きません。何が原因なのかご教示ください。もしかしたら、私のやり方が悪いのかもしれません。
はmqlで書かれているのでしょうか?)
コードを教えてください。
//--------------------------------------------------------------- // modifystoploss.mq4 // MQL4チュートリアルの例として使用するために設計されました。 //--------------------------------------------------------------- extern int Tral_Stop=10; // Dist.chase 1 -- int start() // 特殊関数 start { string Symb=Symbol(); // Fin.Sim=Symbol()です。tool //----------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // オーダーループ { if (OrderSelect(i-1,SELECT_BY_POS)==true) // 次があれば { // オーダー解析: int Tip=OrderType(); // オーダータイプ if(OrderSymbol()!=Symb||Tip>1)continue;// Not our order double SL=OrderStopLoss(); // Selected order の SL //------------------------------------------------------ 3 -- while(true) // 修正ループ { double TS=Tral_Stop; // 初期値 int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// 最小距離 if (TS<Min_Dist) // もし許容値以下なら、注文は削除されます。 TS=Min_Dist; // 新しいTSの値 //-------------------------------------------------------- 4 -- bool Modify=false; // 修正を指定しない switch(Tip) // 注文種別 { case 0 : // 買い注文 if (NormalizeDouble(SL,Digits)< // 低くしたい場合. NormalizeDouble(Bid-TS*Point,Digits) { SL=Bid-TS*Point; // その後修正 string Text="Buy "; // 買いのテキスト Modify=true; // 修正を割り当て } break; // 終了 case 1 : // 売り注文 if (NormalizeDouble(SL,Digits)> // 上記の要求があれば、売り注文。 NormalizeDouble(Ask+TS*Point,Digits)|| NormalizeDouble(SL,Digits)==0)/-or equal to zero { SL=Ask+TS*Point; // それから修正 Text="Sell "; // Modify=true; // 修正を割り当て } } // end switch if (Modify==false) // If not modified break; // exit while //------------------------------------------------------ 5 -- double TP =OrderTakeProfit() ; // 選択した注文の TP を指定。 double Price =OrderOpenPrice(); // 選択した注文の価格 int Ticket=OrderTicket(); // 選択した注文の番号 Alert ("Modify ",Text,Ticket,".Waiting for reply..."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);// 変更します!(O'Modify!) //--------------------------------------------------- 6 -- if (Ans==true) // うまくいった :) { Alert ("Order ",Text,Ticket," modified:)"); break; // ループモディファイからです。 } //-------------------------------------------------------- 7 -- int Error=GetLastError(); // 失敗 :( switch(Error) // エラーを克服する { case 130:Alert("Wrong stops. Try again."); RefreshRates(); // データの更新 continue; // 次のイテレーションを行う。反復 case 136:Alert("No price. Waiting for new tick..."); while(RefreshRates()==false) // 新しいティックまで Sleep(1); // ループ内で遅延 continue; // 次回の反復 case 146:Alert("The trading subsystem is busy.Try again"); Sleep(500); // シンプルなソリューション RefreshRates(); // データを更新 continue; // 次の繰り返し // 重大なエラー case 2 : Alert("General error."); break; // 終了 switch case 5 : Alert("Old client terminal version."); break; // 終了 switch case 64 : Alert("Account blocked."); break; // 終了 switch case 133:Alert("Trading prohibited"); break; // 終了 switch default: Alert("Error",Error);//Error } break; // 修正ループ終了 } // 修正ループ終了 //-------------------------------------- 8 -- } // 注文解析終了 //-------------------------------------- 9 return; // 終了 start() } //-------------------------------------- 10 -- (注)注文解析が終了すると、注文解析が終了する。みなさん、こんばんは。
セルゲイ・コバレフ氏のチュートリアルで、トレーリングストップという専門家を見つけました。MetaEditorにコピーし、コンパイルしましたが、プログラムが動きません。何が原因なのかご教示ください。もしかしたら、私のやり方が悪いのかもしれません。
これを使ってください。
ユーザー変数には、こう書きます。
EAスタートで書き込みます。
// ----------------------------- Тралим ордера ------------------------------------ TrailingRyn_b(TrailingStop,TrailingStep,Proskalz,MAGIC,WaitProfit,false);カスタムサブプログラムで起動後、書き込みます。
ModifError()のような関数は、私のカスタム関数で、エラーメッセージを 表示するだけです。代わりに自分のメッセージを書いてください。
https://docs.mql4.com/ru/indicators/iBands