MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1816 1...180918101811181218131814181518161817181818191820182118221823...1953 新しいコメント Tretyakov Rostyslav 2021.12.15 11:34 #18151 Alexander Avksentyev #:押しつけがましく、申し訳ありません。押し付けがましくなくていいんです。わからないことは遠慮なく、いつでも聞いてください。 一例を挙げます。 Tretyakov Rostyslav 2021.12.15 11:42 #18152 Alexander Avksentyev #: iTrailStart"、"iTrailDist "とは何ですか? Alexander Avksentyev 2021.12.15 11:44 #18153 Tretyakov Rostyslav #:iTrailStart"、"iTrailDist "とは何ですか? スイッチオンするポイント数と市場からトロールまでの距離 iTrailStart = 10; //トロールを有効にするポイント数です。 iTrailDist = 10; //ストップからマーケットまでの距離。 11pipsの差でプラスになった場合、11-10=1pipsの損切りなしという注文です。 Tretyakov Rostyslav 2021.12.15 12:02 #18154 Alexander Avksentyev #:収録点数とマーケットからtslまでの距離 多かれ少なかれ //--- input parameters int iTrailStart = 10; //Кол-во пунктов для включения тралa int iTrailDist = 10; //Расстояние от стопа до рынка //--- global parameters int iDistTrail = iTrailDist; //+------------------------------------------------------------------+ void OnTick() { //--- if(iDistTrail<MarketInfo(Symbol(),MODE_STOPLEVEL)) iDistTrail = MarketInfo(Symbol(),MODE_STOPLEVEL); // дальше твой код } //+------------------------------------------------------------------+ void TrailSL() { if(iTrailStart <= 0) return; double sl_lev; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if ((OrderStopLoss() == 0 && Bid > OrderOpenPrice() + iTrailStart * _Point)||(OrderStopLoss() != 0 && Bid > OrderStopLoss() + (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Bid - iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } if(OrderType() == OP_SELL) { if ((OrderStopLoss() == 0 && Ask < OrderOpenPrice() - iTrailStart * _Point)||(OrderStopLoss() != 0 && Ask < OrderStopLoss() - (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Ask + iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } } } } } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.12.15 12:14 #18155 これらの定数のためのENUMはありますか、それとも自分で書かなければなりませんか? 定数 価値 商品説明 DRAW_LINE 0 シンプルライン DRAW_SECTION 1 空でない線分値間の線分 DRAW_HISTOGRAM 2 ヒストグラム DRAW_ARROW 3 矢印(シンボル) DRAW_ZIGZAG 4 偶数ラインと奇数ラインの空白でない値の間隔(ジグザグ)、2 DRAW_NONE 12 いかなる種類の絵も描かない Alexey Viktorov 2021.12.15 12:25 #18156 Tretyakov Rostyslav #:これらの定数に対するENUMはありますか、それとも自分で書かなければなりませんか? 定数 価値 商品説明 DRAW_LINE 0 シンプルライン DRAW_SECTION 1 空でない線分値間の線分 DRAW_HISTOGRAM 2 ヒストグラム DRAW_ARROW 3 矢印(シンボル) DRAW_ZIGZAG 4 偶数ラインと奇数ラインの空白でない値の間隔(ジグザグ)、2 DRAW_NONE 12 図面なし ドローイングスタイル ENUM_DRAW_TYPE mql4にはそれがないのが残念ですが...。 Tretyakov Rostyslav 2021.12.15 12:30 #18157 Alexey Viktorov #: ドローイングスタイル ENUM_DRAW_TYPE 申し訳ありませんが、mql4にはありません...。 ありがとうございます、自分も書きます) Alexander Avksentyev 2021.12.15 14:23 #18158 Tretyakov Rostyslav #:そういうことなんです。 ありがとうございます、調べ続けて解明します。 Alexander Avksentyev 2021.12.15 15:11 #18159 Tretyakov Rostyslav #:こんな感じ int Login = 4950287; datetime time = D'2022.01.01 00:00:00'; string name = "Test"; datetime time1 = 0; double TP, lastlot, minlot; int Forder; int TakeProfit,TrailStart,TrailDist,TrailStep,TrailTakeProfit,Step,Slippage; double level_count=0; int iDistTrail = iTrailDist; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Torder-Цена открытия первого ордера //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if(AccountNumber() != Login) { int close = MessageBox("Неверный номер счёта","Ошибка",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else (AccountNumber() == Login); { int close = MessageBox("Проверка прошла успешно.Экcперт может приступить к работе.","Инициализация",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if (TimeCurrent() > time) { int close = MessageBox("Время работы закончилось!!!","Время работы",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else(TimeCurrent() < time); { int close = MessageBox("Проверка времени работы прошла успешно.Эксперт может приступить к работе!","Время работы",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// TakeProfit =iTakeProfit; TrailStart =iTrailStart; TrailDist =iTrailDist; TrailStep =iTrailStep; TrailTakeProfit =iTrailTakeProfit; Step =iStep; Slippage =iSlippage; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if(Digits == 3 || Digits == 5) { TakeProfit *=10; TrailStart *=10; TrailDist *=10; TrailStep *=10; TrailTakeProfit *=10; Step *=10; Slippage *=10; } return(INIT_SUCCEEDED); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// /* Comment( "\n", name, "\n", " ", Symbol(), "\n", "Тайм Фрейм ", Period(), "\n", AccountCompany(), "\n", "\n ", AccountServer(), "\n", "Lots\n", B_S_Lot(), "\n", "Price ", Bid, "\n", "Дата ", TimeToString( TimeCurrent(), TIME_DATE ), "\n", "Server Time ", TimeToString( TimeCurrent(), TIME_SECONDS ), "\n", "Profit ", Profit(), "\n", "AvTP ", CalcTP (), "\n", "Количество ордеров ", CountTrades(), "\n", "\n ", GetVolumeLotLastOrder(), "\n", "\n", "Процент просадки ", NormalizeDouble( (AccountInfoDouble(ACCOUNT_BALANCE)-AccountInfoDouble(ACCOUNT_MARGIN_FREE))/AccountInfoDouble(ACCOUNT_BALANCE)*100,2) );*/ //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// double body = Close[1] - Open[1]; if (CountTrades() == 0 && body > 0) BuyOpen(); // Если нет открытых и сигнал бай if (CountTrades() == 0 && body < 0) SellOpen(); // Если нет открытых и сигнал селл if (CountTrades(0) > 0 && body > 0) BuyOpen(); // Если есть открытые бай и сигнал бай if (CountTrades(1) > 0 && body < 0) SellOpen(); // Если есть открытые селл и сигнал селл /* if (iTrailStart<MarketInfo(Symbol(),MODE_STOPLEVEL)) iTrailStart= MarketInfo(Symbol(), MODE_STOPLEVEL * Point); iTrailSL(); */ if(iDistTrail<MarketInfo(Symbol(),MODE_STOPLEVEL)) iDistTrail = MarketInfo(Symbol(),MODE_STOPLEVEL); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void BuyOpen() //Открытие позиции Buy { Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,iSlippage,0,0,"Коммент",Magic,0,Blue)); if(Forder > 0) { Print("Открыта Позиция BUY"); if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Ask+iTakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован BUY "); else Print("Ошибка Модификации Ордера BUY = ",GetLastError()); } } else Print("Ошибка Открытия Позиции BUY"); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void SellOpen() //Открытие позиции Sell { Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,iSlippage,0,0,"Коммент Sell",Magic,0,Red)); if (Forder > 0) { Print("Открыта Позиция SELL"); if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Bid-iTakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован SELL "); else Print("Ошибка Модификации Ордера SELL = ",GetLastError()); } } else Print("Ошибка Открытия Позиции SELL"); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester() { //--- double ret=0.0; //--- //--- return(ret); } //+------------------------------------------------------------------+ //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Подсчёт эквити | //+------------------------------------------------------------------+ double Profit(){double count=0; for (int i=OrdersTotal()-1; i>=0; i--){ if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if(OrderSymbol() == Symbol() && OrderMagicNumber()==Magic) count+=OrderProfit(); count+=OrderSwap(); } } return(NormalizeDouble(count, 2)); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// void TrailSL() { if(iTrailStart <= 0) return; double sl_lev; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if ((OrderStopLoss() == 0 && Bid > OrderOpenPrice() + iTrailStart * _Point)||(OrderStopLoss() != 0 && Bid > OrderStopLoss() + (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Bid - iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } if(OrderType() == OP_SELL) { if ((OrderStopLoss() == 0 && Ask < OrderOpenPrice() - iTrailStart * _Point)||(OrderStopLoss() != 0 && Ask < OrderStopLoss() - (iDistTrail+iTrailStep) * _Point)) { sl_lev = NormalizeDouble(Ask + iDistTrail * _Point,Digits); if (OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed)) Print("Удачная модифиция стоплосс ордера №",OrderTicket()); else Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError()); } } } } } } //+------------------------------------------------------------------+ 以下はそのコードです。もしかしたら間違っているかもしれませんが、エフェクトがかかりません。 Tretyakov Rostyslav 2021.12.15 15:38 #18160 Alexander Avksentyev #:以下はそのコードです。もしかしたら間違っているかもしれませんが、エフェクトがかかりません。 ログブックには何が書かれているのですか? コード全体をファイルとして添付して投稿してください。 1...180918101811181218131814181518161817181818191820182118221823...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
押しつけがましく、申し訳ありません。
押し付けがましくなくていいんです。わからないことは遠慮なく、いつでも聞いてください。
一例を挙げます。iTrailStart"、"iTrailDist "とは何ですか?
iTrailStart"、"iTrailDist "とは何ですか?
スイッチオンするポイント数と市場からトロールまでの距離
iTrailStart = 10; //トロールを有効にするポイント数です。
iTrailDist = 10; //ストップからマーケットまでの距離。
11pipsの差でプラスになった場合、11-10=1pipsの損切りなしという注文です。
収録点数とマーケットからtslまでの距離
多かれ少なかれ
これらの定数のためのENUMはありますか、それとも自分で書かなければなりませんか?
定数
価値
商品説明
DRAW_LINE
0
シンプルライン
DRAW_SECTION
1
空でない線分値間の線分
DRAW_HISTOGRAM
2
ヒストグラム
DRAW_ARROW
3
矢印(シンボル)
DRAW_ZIGZAG
4
偶数ラインと奇数ラインの空白でない値の間隔(ジグザグ)、2
DRAW_NONE
12
いかなる種類の絵も描かない
これらの定数に対するENUMはありますか、それとも自分で書かなければなりませんか?
定数
価値
商品説明
DRAW_LINE
0
シンプルライン
DRAW_SECTION
1
空でない線分値間の線分
DRAW_HISTOGRAM
2
ヒストグラム
DRAW_ARROW
3
矢印(シンボル)
DRAW_ZIGZAG
4
偶数ラインと奇数ラインの空白でない値の間隔(ジグザグ)、2
DRAW_NONE
12
図面なし
ENUM_DRAW_TYPE
ドローイングスタイル
ENUM_DRAW_TYPE
そういうことなんです。
ありがとうございます、調べ続けて解明します。
こんな感じ
以下はそのコードです。もしかしたら間違っているかもしれませんが、エフェクトがかかりません。
以下はそのコードです。もしかしたら間違っているかもしれませんが、エフェクトがかかりません。
ログブックには何が書かれているのですか?
コード全体をファイルとして添付して投稿してください。