フリーEAの作成 - ページ 11 1...45678910111213141516 新しいコメント gss 2021.05.20 15:29 #101 4p0ssum: 親愛なるgss様、私のリクエストにご興味をお持ちいただき、ありがとうございます。MQL4プログラマーであれば、他のMQL4プログラマーとEAを交換することができます。私が持っているコードは良いものだと思います。私は様々なEAからそれを集めました。残りは自分で作った(保留中の注文について)。あなたや他の達人に私のコードを見てもらい、このロボットにもう2つの機能を追加してもらいたいのですが、よろしいですか? 1)どちらかがトリガーされた時の保留注文の削除。 2) ロットの自動増加(50ドルごとに0.01、すなわち100ドルでは0.02になります)。 よろしくお願いします。 //+------------------------------------------------------------------+ //| 4p0ssum.mq4 | //| Copyright 2013, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #property strict extern int TakeProfit = 100.0; extern bool AllPositions = True; // Управлять всеми позициями extern bool ProfitTrailing = True; // Тралить только профит extern int TrailingStop = 50; // Фиксированный размер трала extern int TrailingStep = 0; // Шаг трала extern bool Del = false; // Удалять оппозитный ордер extern bool UseSound = False; // Использовать звуковой сигнал extern string NameFileSound = "expert.wav"; // Наименование звукового файла //------- Внешние параметры модуля ----------------------------------- extern string _Parameters_b_Lots = "---------- Параметры модуля расчёта лота"; extern int LotsWayChoice = 0; // Способ выбора рабочего лота: // 0-фиксированный, // 1-процент от депозита, // 2-фиксированно-пропорциональный, // 3-фракционно-фиксированный, extern double Lots = 0.1; // Фиксированный размер лота extern int LotsPercent = 10; // Процент от депозита extern int LotsDeltaDepo = 500; // Коэффициент приращения депозита extern int LotsDepoForOne = 500; // Размер депозита для одного минилота extern int LotsMax = 1000; // Максимальное количество минилотов //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void start() { double TakeProfitLevelB; double TakeProfitLevelS; double BuyStart = Ask + 400*_Point; double SellStart = Bid - 400*_Point; TakeProfitLevelB = BuyStart + TakeProfit*Point; TakeProfitLevelS = SellStart - TakeProfit*Point; if (Open[1]==Close[1]&& OrdersTotal()==0) { int BuyTicket = OrderSend(Symbol(),OP_BUYSTOP,GetSizeLot(),BuyStart,3,0,TakeProfitLevelB,NULL,0,0,Green); int SellTicket = OrderSend(Symbol(),OP_SELLSTOP,GetSizeLot(),SellStart,3,0,TakeProfitLevelS,NULL,0,0,Blue); } for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (AllPositions || OrderSymbol()==Symbol()) { TrailingPositions(); } } } if(Del && ExistPositions(Symbol()))DeleteOrders(Symbol(),-1); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void TrailingPositions() { double pBid, pAsk, pp; pp = MarketInfo(OrderSymbol(), MODE_POINT); if (OrderType()==OP_BUY) { pBid = MarketInfo(OrderSymbol(), MODE_BID); if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) { if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) { ModifyStopLoss(pBid-TrailingStop*pp); return; } } } if (OrderType()==OP_SELL) { pAsk = MarketInfo(OrderSymbol(), MODE_ASK); if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) { if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) { ModifyStopLoss(pAsk+TrailingStop*pp); return; } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ModifyStopLoss(double ldStopLoss) { bool fm; fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE); if (fm && UseSound) PlaySound(NameFileSound); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 06.03.2008 | //| Описание : Возвращает флаг существования позиций | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //| ot - время открытия ( 0 - любое время открытия) | //+----------------------------------------------------------------------------+ bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) { int i, k=OrdersTotal(); if (sy=="" || sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (ot<=OrderOpenTime()) return(True); } } } } } } return(False); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 13.06.2007 | //| Описание : Удаление ордеров. Версия функции для тестов на истории. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" или NULL - текущий символ) | //| op - операция ( -1 - любая позиция) | //| mn - MagicNumber ( -1 - любой магик) | //+----------------------------------------------------------------------------+ void DeleteOrders(string sy="", int op=-1, int mn=-1) { int i, k=OrdersTotal(), ot; if (sy=="" || sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { ot=OrderType(); if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) { if (OrderSymbol()==sy && (op<0 || ot==op)) { if (mn<0 || OrderMagicNumber()==mn) { OrderDelete(OrderTicket(), clrRed); } } } } } } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.02.2008 | //| Описание : Возвращает одно из двух значений взависимости от условия. | //+----------------------------------------------------------------------------+ string IIFs(bool condition, string ifTrue, string ifFalse) { if (condition) return(ifTrue); else return(ifFalse); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Вывод сообщения в коммент и в журнал | //+----------------------------------------------------------------------------+ //| Параметры: | //| m - текст сообщения | //+----------------------------------------------------------------------------+ void Message(string m) { Comment(m); if (StringLen(m)>0) Print(m); } //+------------------------------------------------------------------+ //| Главная функция получения размера лота (вызывается из советника) | //+------------------------------------------------------------------+ double GetSizeLot() { double dLot; if (LotsWayChoice==0) dLot=Lots; // фиксированный процент от депозита if (LotsWayChoice==1) { dLot=MathCeil(AccountFreeMargin()/100000*LotsPercent)/10; } // фиксированно-пропорциональный if (LotsWayChoice==2) { int k=LotsDepoForOne; for (double i=2; i<=LotsMax; i++) { k=k+i*LotsDeltaDepo; if (k>AccountFreeMargin()) { dLot=(i-1)/10000; break; } } } // фракционно-фиксированный if (LotsWayChoice==3) { dLot=MathCeil((AccountFreeMargin()-LotsDepoForOne)/LotsDeltaDepo)/10; } if (dLot<MarketInfo(Symbol(), MODE_MINLOT)) dLot=MarketInfo(Symbol(), MODE_MINLOT); if (dLot<0.01) dLot=0.01; return(dLot); } //+------------------------------------------------------------------+ ilfatiskhakov 2021.05.26 16:33 #102 こんにちは、EAを書く のを手伝っていただけませんか?ここからが本題です。ローソク足が大きな出来高(買いまたは売り)で閉じると、2本目にロットとTPをカスタマイズした買いまたは売りの注文が発注されます。ありがとうございます。もしよろしければ)) MT4ターミナル Andrei 2021.05.26 21:32 #103 ilfatiskhakov: こんにちは、EAの書き方を教えて ほしいのですが。ここからが本題です。ローソク足が大きな出来高(買いまたは売り)で閉じると、2本目にロットとTPをカスタマイズした買いまたは売りの注文が発注されます。ありがとうございます。もしよろしければ)) MT4ターミナル https://www.mql5.com/ru/code/mt4/experts MQL5 Code Base: Советники www.mql5.com Советники для MetaTrader 4 с исходными кодами SAJSRAh 2021.06.01 07:26 #104 こんにちは、添付のADXインジケーターのEA作成を お願いします。種類が多いので、他のインジケータではなく、このインジケータ用のEAを書いてくださいということです。 矢印から矢印への動作原理は、矢印が表示されるとディールが開かれ、反対の信号が表示されるとディールが閉じられ、反対方向に開かれます。ロットは、バランス×(リスク/1000)の式で計算され、リスクは0から1までです。 また、固定ロット機能もあるはずです ファイル: adx-buy-sell.mq4 4 kb Iurii Tokman 2021.06.01 09:18 #105 SAJSRAh:こんにちは、添付のADXインジケーターのEA作成を お願いします。種類が多いので、他のインジケータではなく、このインジケータ用のEAを書いてくださいということです。矢印から矢印への動作原理は、矢印が表示されるとディールが開かれ、反対の信号が表示されるとディールが閉じられ、反対方向に開かれます。ロットは、バランス×(リスク/1000)の式で計算され、ここでリスクは0から1までです。 また、定数ロット機能もあるはずです 擬似信号 + 将来の指標となる SAJSRAh 2021.06.01 09:49 #106 Iurii Tokman:ソリッド偽信号+ 将来の指標となる H4で手動でトレードしていますが、悪くないと思います。 削除済み 2021.06.01 10:20 #107 イウリイ・トクマン: ソリッド偽信号 + 将来の指標となる MT5では若干異なるエントリーポイント //+------------------------------------------------------------------+ //| Back and forth ADX.mq5 | //| Copyright © 2005, BrainTrading Inc | //| http://www.braintrading.com | //+------------------------------------------------------------------+ //---- авторство индикатора #property copyright "Copyright © 2005, BrainTrading Inc." //---- ссылка на сайт автора #property link "http://www.braintrading.com/" //---- номер версии индикатора #property version "1.00" //---- отрисовка индикатора в главном окне #property indicator_chart_window //---- для расчета и отрисовки индикатора использовано два буфера #property indicator_buffers 2 //---- использовано всего два графических построения #property indicator_plots 2 //+----------------------------------------------+ //| Параметры отрисовки медвежьего индикатора | //+----------------------------------------------+ //---- отрисовка индикатора 1 в виде символа #property indicator_type1 DRAW_ARROW //---- в качестве цвета медвежьей линии индикатора использован розовый цвет #property indicator_color1 Wheat //---- толщина линии индикатора 1 равна 4 #property indicator_width1 2 //---- отображение метки медвежьей линии индикатора #property indicator_label1 "Back and forth ADX Sell" //+----------------------------------------------+ //| Параметры отрисовки бычьго индикатора | //+----------------------------------------------+ //---- отрисовка индикатора 2 в виде символа #property indicator_type2 DRAW_ARROW //---- в качестве цвета бычей линии индикатора использован зеленый цвет #property indicator_color2 LightSeaGreen //---- толщина линии индикатора 2 равна 4 #property indicator_width2 2 //---- отображение метки бычьей линии индикатора #property indicator_label2 "Back and forth ADX Buy" //+----------------------------------------------+ //| Входные параметры индикатора | //+----------------------------------------------+ input int adx_period=14; // период расчета ADX //---- объявление динамических массивов, которые будут в //---- дальнейшем использованы в качестве индикаторных буферов double SellBuffer[]; double BuyBuffer[]; //--- индикаторные буферы double ADXBuffer[]; double DI_plusBuffer[]; double DI_minusBuffer[]; //--- int OldTrend; int ADX_Handle; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void OnInit() { //---- получение хендла индикатора ADX ADX_Handle=iADX(Symbol(),Period(),adx_period); if(ADX_Handle==INVALID_HANDLE) Print(" Не удалось получить хендл индикатора iADX"); //---- превращение динамического массива в индикаторный буфер SetIndexBuffer(0,SellBuffer,INDICATOR_DATA); //---- осуществление сдвига начала отсчета отрисовки индикатора 1 PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,0); //--- создание метки для отображения в DataWindow PlotIndexSetString(0,PLOT_LABEL,"Back and forth ADX Sell"); //---- символ для индикатора PlotIndexSetInteger(0,PLOT_ARROW,108); //---- индексация элементов в буфере как в таймсерии ArraySetAsSeries(SellBuffer,true); //---- превращение динамического массива в индикаторный буфер SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA); //---- осуществление сдвига начала отсчета отрисовки индикатора 2 PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,0); //--- создание метки для отображения в DataWindow PlotIndexSetString(1,PLOT_LABEL,"Back and forth ADX Buy"); //---- символ для индикатора PlotIndexSetInteger(1,PLOT_ARROW,108); //---- индексация элементов в буфере как в таймсерии ArraySetAsSeries(BuyBuffer,true); //--- привязка массивов к индикаторным буферам SetIndexBuffer(2,ADXBuffer,INDICATOR_DATA); SetIndexBuffer(3,DI_plusBuffer,INDICATOR_DATA); SetIndexBuffer(4,DI_minusBuffer,INDICATOR_DATA); //---- установка формата точности отображения индикатора IndicatorSetInteger(INDICATOR_DIGITS,_Digits); //---- имя для окон данных и лэйба для субъокон string short_name="Back and forth ADX"; IndicatorSetString(INDICATOR_SHORTNAME,short_name); //---- } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //---- проверка количества баров на достаточность для расчета if(BarsCalculated(ADX_Handle)<rates_total || rates_total<0) return(0); //---- объявления локальных переменных int to_copy,limit,bar; bool ADXUp,ADXDn; //---- расчеты необходимого количества копируемых данных и //стартового номера limit для цикла пересчета баров if(prev_calculated>rates_total || prev_calculated<=0)// проверка на первый старт расчета индикатора { to_copy=rates_total; // расчетное количество всех баров limit=rates_total-1; // стартовый номер для расчета всех баров } else { to_copy=rates_total-prev_calculated+1; // расчетное количество только новых баров limit=rates_total-prev_calculated; // стартовый номер для расчета новых баров } //---- копируем вновь появившиеся данные в массивы if(CopyBuffer(ADX_Handle,0,0,to_copy,ADXBuffer)<=0) return(0); if(CopyBuffer(ADX_Handle,1,0,to_copy,DI_plusBuffer)<=0) return(0); if(CopyBuffer(ADX_Handle,2,0,to_copy,DI_minusBuffer)<=0) return(0); //---- индексация элементов в массивах как в таймсериях ArraySetAsSeries(ADXBuffer,true); ArraySetAsSeries(DI_plusBuffer,true); ArraySetAsSeries(DI_minusBuffer,true); ArraySetAsSeries(open,true); ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); ArraySetAsSeries(close,true); //---- основной цикл расчета индикатора for(bar=limit; bar>=0; bar--) { SellBuffer[bar]=0.0; BuyBuffer[bar]=0.0; ADXDn=DI_plusBuffer[bar]<DI_minusBuffer[bar] && ADXBuffer[bar]<DI_minusBuffer[bar]; ADXUp=DI_plusBuffer[bar]>DI_minusBuffer[bar] && ADXBuffer[bar]>DI_minusBuffer[bar]; //---- if(ADXDn) { if(OldTrend>0) SellBuffer[bar]=high[bar]; if(bar!=0) OldTrend=-1; } if(ADXUp) { if(OldTrend<0) BuyBuffer[bar]=low[bar]; if(bar!=0) OldTrend=+1; } } //---- return(rates_total); } //+------------------------------------------------------------------+ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\インジケーターのチェックに走り、良いスタートを切ったようです。 Iurii Tokman 2021.06.01 10:38 #108 SAJSRAh:H4で手動で取引していますが、いい感じです。 スタジオでの取引結果 Iurii Tokman 2021.06.01 10:44 #109 SanAlex:MT5ではエントリーポイントが若干異なる 未来はどこにある? for(int i = 0; i < limit; i++) { b4plusdi = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_PLUSDI, i - 1); i - 1 削除済み 2021.06.01 10:49 #110 Iurii Tokman:未来はどこだ? 全くわからない、そのまま作った!独学で、全て科学的手法で。 \\\\\\\\\\\\\ Ίταμμα για για για για για για για για για για για για για για για για για 1...45678910111213141516 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
親愛なるgss様、私のリクエストにご興味をお持ちいただき、ありがとうございます。MQL4プログラマーであれば、他のMQL4プログラマーとEAを交換することができます。私が持っているコードは良いものだと思います。私は様々なEAからそれを集めました。残りは自分で作った(保留中の注文について)。あなたや他の達人に私のコードを見てもらい、このロボットにもう2つの機能を追加してもらいたいのですが、よろしいですか?
よろしくお願いします。
こんにちは、EAの書き方を教えて ほしいのですが。ここからが本題です。ローソク足が大きな出来高(買いまたは売り)で閉じると、2本目にロットとTPをカスタマイズした買いまたは売りの注文が発注されます。ありがとうございます。もしよろしければ)) MT4ターミナル
https://www.mql5.com/ru/code/mt4/experts
こんにちは、添付のADXインジケーターのEA作成を お願いします。種類が多いので、他のインジケータではなく、このインジケータ用のEAを書いてくださいということです。
矢印から矢印への動作原理は、矢印が表示されるとディールが開かれ、反対の信号が表示されるとディールが閉じられ、反対方向に開かれます。ロットは、バランス×(リスク/1000)の式で計算され、リスクは0から1までです。 また、固定ロット機能もあるはずです
こんにちは、添付のADXインジケーターのEA作成を お願いします。種類が多いので、他のインジケータではなく、このインジケータ用のEAを書いてくださいということです。
矢印から矢印への動作原理は、矢印が表示されるとディールが開かれ、反対の信号が表示されるとディールが閉じられ、反対方向に開かれます。ロットは、バランス×(リスク/1000)の式で計算され、ここでリスクは0から1までです。 また、定数ロット機能もあるはずです
擬似信号
+ 将来の指標となる
ソリッド偽信号
+ 将来の指標となる
H4で手動でトレードしていますが、悪くないと思います。
イウリイ・トクマン:
ソリッド偽信号
+ 将来の指標となる
MT5では若干異なるエントリーポイント
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
インジケーターのチェックに走り、良いスタートを切ったようです。
H4で手動で取引していますが、いい感じです。
スタジオでの取引結果
MT5ではエントリーポイントが若干異なる
未来はどこにある?
i - 1未来はどこだ?
全くわからない、そのまま作った!独学で、全て科学的手法で。
\\\\\\\\\\\\\ Ίταμμα για για για για για για για για για για για για για για για για για