洗脳:システム開発 - ページ 6 123456 新しいコメント ffoorr 2018.10.27 19:10 #51 同じEAで、BrainTrend1Sigのシグナルを使用する。 //+------------------------------------------------------------------+ //| EA_BrainTrend1Sig.mq4 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern bool open_buy = true; extern bool open_sell = true; extern int MagicNumber = 451; extern double StopLoss = 135; extern double TakeProfit = 400; extern double lots = 0.1; string Text ; extern int Tral_Stop = 180; // double signal_up = iCustom(NULL,0,"NK//Plus//BrainTrend//BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,0,1 ); extern int EnableAlerts=0; extern int SignalID=0; extern int Input_Price_Customs = 0; //Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà datetime time0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if( time0 == Time[0] ) return; time0= Time[0]; if( count_tip(OP_BUY) > 0 ) trailing_stop(); if( count_tip(OP_SELL) > 0 ) trailing_stop(); // double signal_up = iCustom(NULL,0,"NK//Plus//BrainTrend//BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,1,1 ); double signal_up = iCustom(NULL,0,"BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,1,1 ); double sl_buy = MathMin( Bid - StopLoss*Point, signal_up ); if( signal_up != 0.0 && open_buy && count_tip(OP_BUY ) == 0 ) { int ticket_buy = OrderSend(_Symbol, OP_BUY, lots, Ask, 3, sl_buy, Ask +TakeProfit*Point, "RsiEma", MagicNumber); } // double signal_down = iCustom(NULL,0,"NK//Pluas//BrainTrend//BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,0,1 ); double signal_down = iCustom(NULL,0,"BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,0,1 ); double sl_sell = MathMax( Ask + StopLoss*Point, signal_down ); if( signal_down != 0.0 && open_sell && count_tip(OP_SELL) == 0 ) { int ticket_sell = OrderSend(_Symbol, OP_SELL, lots, Bid, 3, sl_sell, Bid - TakeProfit*Point, "RsiEma", MagicNumber); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int count_tip( int tip = -1) { int cpte_order = 0; for (int i = (OrdersTotal()-1); i >=0; i--) { if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) continue; if( OrderMagicNumber()==MagicNumber && OrderType()== tip) cpte_order++; } return(cpte_order); } //+------------------------------------------------------------------+ // https://book.mql4.com/trading/ordermodify //------------------------------------------------------------------------------- 1 -- void trailing_stop ( ) // Special function 'start' { string Symb=Symbol(); // Symbol //------------------------------------------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // Cycle searching in orders { if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available { // Analysis of orders: int Tip=OrderType(); // Order type if(OrderSymbol()!=Symb||Tip>1)continue;// The order is not "ours" double SL=OrderStopLoss(); // SL of the selected order //---------------------------------------------------------------------- 3 -- while(true) // Modification cycle { double TS=Tral_Stop; // Initial value int Min_Dist= (int) MarketInfo(Symb,MODE_STOPLEVEL);//Min. distance if (TS < Min_Dist) // If less than allowed TS=Min_Dist; // New value of TS //------------------------------------------------------------------- 4 -- bool Modify=false; // Not to be modified switch(Tip) // By order type { case 0 : // Order Buy if (NormalizeDouble(SL,Digits)< // If it is lower than we want NormalizeDouble(Bid-TS*Point,Digits)) { SL=Bid-TS*Point; // then modify it Text="Buy "; // Text for Buy Modify=true; // To be modified } break; // Exit 'switch' case 1 : // Order Sell if (NormalizeDouble(SL,Digits)> // If it is higher than we want NormalizeDouble(Ask+TS*Point,Digits) || NormalizeDouble(SL,Digits)==0)//or equal to zero { SL=Ask+TS*Point; // then modify it Text="Sell "; // Text for Sell Modify=true; // To be modified } } // End of 'switch' if (Modify==false) // If it is not modified break; // Exit 'while' //------------------------------------------------------------------- 5 -- double TP =OrderTakeProfit(); // TP of the selected order double Price =OrderOpenPrice(); // Price of the selected order int Ticket=OrderTicket(); // Ticket of the selected order Alert ("Modification ",Text,Ticket,". Awaiting response.."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Modify it! //------------------------------------------------------------------- 6 -- if (Ans==true) // Got it! :) { Alert ("Order ",Text,Ticket," is modified:)"); break; // From modification cycle. } //------------------------------------------------------------------- 7 -- int Error=GetLastError(); // Failed :( switch(Error) // Overcomable errors { case 130:Alert("Wrong stops. Retrying."); RefreshRates(); // Update data continue; // At the next iteration case 136:Alert("No prices. Waiting for a new tick.."); while(RefreshRates()==false) // To the new tick Sleep(1); // Cycle delay continue; // At the next iteration case 146:Alert("Trading subsystem is busy. Retrying "); Sleep(500); // Simple solution RefreshRates(); // Update data continue; // At the next iteration // Critical errors case 2 : Alert("Common error."); break; // Exit 'switch' case 5 : Alert("Old version of the client terminal."); break; // Exit 'switch' case 64: Alert("Account is blocked."); break; // Exit 'switch' case 133:Alert("Trading is prohibited"); break; // Exit 'switch' default: Alert("Occurred error ",Error);//Other errors } break; // From modification cycle } // End of modification cycle //---------------------------------------------------------------------- 8 -- } // End of order analysis } // End of order search //------------------------------------------------------------------------------- 9 -- return; // Exit start() } //---------------------------------------------------------------- ffoorr 2018.10.27 19:12 #52 bt ; ffoorr 2018.10.27 19:52 #53 利益のグラフが見えますか? 一勝一敗なので、マーチンゲールで動作することができます、EA_BrainTrend1Sig //+------------------------------------------------------------------+ //| EA_BrainTrend1Sig.mq4 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern bool open_buy = 0; extern bool open_sell = true; extern int MagicNumber = 451; extern double StopLoss = 135; extern double TakeProfit = 400; extern double lots = 0.1; string Text ; extern int Tral_Stop = 180; extern bool use_mart = true; // double signal_up = iCustom(NULL,0,"NK//Plus//BrainTrend//BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,0,1 ); extern int EnableAlerts=0; extern int SignalID=0; extern int Input_Price_Customs = 0; //Âûáîð öåí, ïî êîòîðûì ïðîèçâîäèòñÿ ðàñ÷¸ò èíäèêàòîðà datetime time0; double llots =0.0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if( time0 == Time[0] ) return; time0= Time[0]; if( count_tip(OP_BUY) > 0 ) trailing_stop(); if( count_tip(OP_SELL) > 0 ) trailing_stop(); llots = lots; if(use_mart ) llots = martingale_lots(); Print(" llots ",(string) llots); double signal_up = iCustom(NULL,0,"NK//Plus//BrainTrend//BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,1,1 ); // double signal_up = iCustom(NULL,0,"BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,1,1 ); double sl_buy = MathMin( Bid - StopLoss*Point, signal_up ); if( signal_up != 0.0 && open_buy && count_tip(OP_BUY ) == 0 ) { int ticket_buy = OrderSend(_Symbol, OP_BUY, llots, Ask, 3, sl_buy, Ask +TakeProfit*Point, "RsiEma", MagicNumber); } double signal_down = iCustom(NULL,0,"NK//Plus//BrainTrend//BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,0,1 ); // double signal_down = iCustom(NULL,0,"BrainTrend1Sig", EnableAlerts,SignalID, Input_Price_Customs,0,1 ); double sl_sell = MathMax( Ask + StopLoss*Point, signal_down ); if( signal_down != 0.0 && open_sell && count_tip(OP_SELL) == 0 ) { int ticket_sell = OrderSend(_Symbol, OP_SELL, llots, Bid, 3, sl_sell, Bid - TakeProfit*Point, "RsiEma", MagicNumber); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int count_tip( int tip = -1) { int cpte_order = 0; for (int i = (OrdersTotal()-1); i >=0; i--) { if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) continue; if( OrderMagicNumber()==MagicNumber && OrderType()== tip) cpte_order++; } return(cpte_order); } //+------------------------------------------------------------------+ // https://book.mql4.com/trading/ordermodify //------------------------------------------------------------------------------- 1 -- void trailing_stop ( ) // Special function 'start' { string Symb=Symbol(); // Symbol //------------------------------------------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // Cycle searching in orders { if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available { // Analysis of orders: int Tip=OrderType(); // Order type if(OrderSymbol()!=Symb||Tip>1)continue;// The order is not "ours" double SL=OrderStopLoss(); // SL of the selected order //---------------------------------------------------------------------- 3 -- while(true) // Modification cycle { double TS=Tral_Stop; // Initial value int Min_Dist= (int) MarketInfo(Symb,MODE_STOPLEVEL);//Min. distance if (TS < Min_Dist) // If less than allowed TS=Min_Dist; // New value of TS //------------------------------------------------------------------- 4 -- bool Modify=false; // Not to be modified switch(Tip) // By order type { case 0 : // Order Buy if (NormalizeDouble(SL,Digits)< // If it is lower than we want NormalizeDouble(Bid-TS*Point,Digits)) { SL=Bid-TS*Point; // then modify it Text="Buy "; // Text for Buy Modify=true; // To be modified } break; // Exit 'switch' case 1 : // Order Sell if (NormalizeDouble(SL,Digits)> // If it is higher than we want NormalizeDouble(Ask+TS*Point,Digits) || NormalizeDouble(SL,Digits)==0)//or equal to zero { SL=Ask+TS*Point; // then modify it Text="Sell "; // Text for Sell Modify=true; // To be modified } } // End of 'switch' if (Modify==false) // If it is not modified break; // Exit 'while' //------------------------------------------------------------------- 5 -- double TP =OrderTakeProfit(); // TP of the selected order double Price =OrderOpenPrice(); // Price of the selected order int Ticket=OrderTicket(); // Ticket of the selected order Alert ("Modification ",Text,Ticket,". Awaiting response.."); bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Modify it! //------------------------------------------------------------------- 6 -- if (Ans==true) // Got it! :) { Alert ("Order ",Text,Ticket," is modified:)"); break; // From modification cycle. } //------------------------------------------------------------------- 7 -- int Error=GetLastError(); // Failed :( switch(Error) // Overcomable errors { case 130:Alert("Wrong stops. Retrying."); RefreshRates(); // Update data continue; // At the next iteration case 136:Alert("No prices. Waiting for a new tick.."); while(RefreshRates()==false) // To the new tick Sleep(1); // Cycle delay continue; // At the next iteration case 146:Alert("Trading subsystem is busy. Retrying "); Sleep(500); // Simple solution RefreshRates(); // Update data continue; // At the next iteration // Critical errors case 2 : Alert("Common error."); break; // Exit 'switch' case 5 : Alert("Old version of the client terminal."); break; // Exit 'switch' case 64: Alert("Account is blocked."); break; // Exit 'switch' case 133:Alert("Trading is prohibited"); break; // Exit 'switch' default: Alert("Occurred error ",Error);//Other errors } break; // From modification cycle } // End of modification cycle //---------------------------------------------------------------------- 8 -- } // End of order analysis } // End of order search //------------------------------------------------------------------------------- 9 -- return; // Exit start() } //---------------------------------------------------------------- //+------------------------------------------------------------------+ double martingale_lots() { int cpte_loss= 0; if( OrdersHistoryTotal() == 0 ) return(0.1) ; for (int i = (OrdersHistoryTotal()-10); i <=OrdersHistoryTotal()-1; i++) { if( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) == false) continue; if( OrderMagicNumber()==MagicNumber ) { if( OrderProfit() < 0 ) cpte_loss++; else cpte_loss = 1; } Print(" cpte_loss ",(string) cpte_loss); } return(cpte_loss*lots ) ; } ffoorr 2018.10.27 19:54 #54 BT ; ffoorr 2018.10.27 20:17 #55 損失が出た場合、一旦ロットを2倍にする場合 : extern int max_cpte_loss = 2; //+------------------------------------------------------------------+ double martingale_lots() { int cpte_loss= 0; if( OrdersHistoryTotal() == 0 ) return(0.1) ; for (int i = (OrdersHistoryTotal()-10); i <=OrdersHistoryTotal()-1; i++) { if( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) == false) continue; if( OrderMagicNumber()==MagicNumber ) { if( OrderProfit() < 0 ) cpte_loss++; else cpte_loss = 1; } Print(" cpte_loss ",(string) cpte_loss); } if( cpte_loss <= max_cpte_loss) return(cpte_loss*lots*2 ) ; else return(lots ) ; } BT jan 2018 oct 2018 より良い: Sergey Golubev 2019.07.03 14:32 #56 洗脳システム はじめに 洗脳される。トレード:手動とEA使用(MT4) 洗脳EA-スレッド(MT4) 洗脳:手動で取引するためのシステム設定とEAs(MT4) -スレッド 洗脳:システム開発(MT4) -スレッド その後 洗脳システム/AscTrendシステム(MT5) -スレッド 123456 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
同じEAで、BrainTrend1Sigのシグナルを使用する。
bt ;
利益のグラフが見えますか?
一勝一敗なので、マーチンゲールで動作することができます、EA_BrainTrend1Sig
BT ;
損失が出た場合、一旦ロットを2倍にする場合
:
BT jan 2018 oct 2018 より良い:
はじめに
その後