コーディングのヘルプ - ページ 104 1...979899100101102103104105106107108109110111...786 新しいコメント rpasupathy 2013.07.03 05:43 #1031 ありがとう、Mladen.あなたは素晴らしいです. yuhu 2013.07.03 08:21 #1032 こんにちは、皆さん。 103ページにある私のリクエストについて、何かお手伝いできることはありますか?私はオンラインで情報を探していますが、(時間の先頭から始まる)5小節ごとにオフにするアラートを取得できませんでした。 ありがとうございました。 sachin_syd 2013.07.03 09:25 #1033 親愛なるMladen/Mr Tools このEAを修正して、ストップまたはTPがヒットしたときに、取引を再開しないようにしてください。 ファイル: heiken_ashi_ea.mq4 6 kb chris 2013.07.04 08:51 #1034 ストップロスに関するコーディングのヘルプ こんにちは、皆さん。 私はこのEAを持っていますが、ストップロスを変更することができないようです。 何を変更しても、変更されません。私はストップロスを少なくとも300に変更したいと思います。何かアイデアはありますか? よろしくお願いします。 これはそのためのコードです。 // 一般的なユーザー入力 extern double Lots=1.0; extern int TakeProfit=44; extern int StopLoss=90; extern bool RSIMethodA=false; extern bool RSIMethodB=true; extern bool RSIMethodB=true; extern int RSIValue=50; extern bool AbandonMethodA=true; extern bool AbandonMethodB=false; extern int RSIValue=50; extern bool AbandonMethodB=false; extern int Abandon=101; extern bool MoneyManagement=true; extern int Risk=2; extern int Slippage=3; extern bool UseProfitLock=true; extern int BreakEvenTrigger=25; extern int BreakEven=3; extern int BreakEvenTrigger=25; extern int BreakEven=3; extern bool LiveTrading=false; extern int BreakEven=3; extern int LiveTrading=false; extern bool AccountIsMini=false; extern int maxTradesPerPair=1; extern int MagicNumber=5432; double lotMM; bool BuySignal=false; bool SetBuy=false。 bool SellSignal=false; bool SetSell=false(ブール セットセル=ファルス)。 // バー処理 datetime bartime=0; int bartick=0; int TradeBars=0; //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| エキスパートスタート機能 //+------------------------------------------------------------------+ int start() { //---- if (UseProfitLock) ProfitLockStop()。 if (AbandonMethodA || AbandonMethodB) { RunAbandonCheck(); RunAbandonMethods()を実行します。 if (!SetLotsMM()) return(0); RunOrderTriggerCalculations(); RunPairSpesificSettings(); RunNewOrderManagement(); //---- return(0); } // SetLotsMM - ロバート・コクラン氏http://autoforex.biz bool SetLotsMM() { double MarginCutoff; if(!AccountIsMini) MarginCutoff = 1000; if( AccountIsMini) MarginCutoff = 100; if( AccountFreeMargin) MarginCutoff = 100; if(AccountFreeMargin() < MarginCutoff) return(false); if(MoneyManagement) { lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10; if(lotMM < 0.1) lotMM = Lots; if(lotMM > 1.0) lotMM = MathCeil(lotMM); // ロットサイズの境界を強制する if(LiveTrading) { if( AccountIsMini) lotMM = lotMM * 10; if(!AccountIsMini && lotMM < 1.0) lotMM = 1.0; } if(lotMM > 100) lotMM = 100; } それ以外 { lotMM = Lots; // Lots パラメータを有効にしたい場合は、MoneyManagement を 0 に変更します。 } return(true); } //+------------------------------------------------------------------+ // RunOrderTriggerCalculations(ランオーダートリガー計算書 bool RunOrderTriggerCalculations() { bool RSIPOS=false; bool RSINEG=false; // バー[1]の3期間移動平均線 double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1); // バー[1]での7期間移動平均 double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1); // バー[2]の2期間移動平均 double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2); double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1); // RSIがどの極性であるかを判断 if (RSIMethodA) { if(RSI>RSIValue && RSI2<RSIValue) { RSIPOS=trueとする。 RSINEG=false。 } else RSIPOS=false。 if(RSISIRValue) { RSIPOS=falseとする。 RSINEG=true。 } else RSINEG=false。 } if (RSIMethodB) { if(RSI>RSIValue) { RSIPOS=trueとする。 RSINEG=false。 } if(RSI<RSIValue) { RSIPOS=false。 RSINEG=true。 } } if ((bullMA3 > (bearMA7+Point)) && RSINEG) { BuySignal=true。 } else BuySignal=false。 if ((bullMA3 < (bearMA7-Point)) && RSIPOS) { SellSignal=trueとする。 } else SellSignal=false。 return(true)とする。 // OpenOrdersBySymbolAndComment(オープンオーダーズバイシンボルアンドコメント int OpenOrdersForThisEA() { int ofts=0; for(int x=0;x<OrdersTotal();x++) { OrderSelect(x, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { オーダーシンボル()==シンボル() && オーダーマジック番号()==マジック番号() { ofts++; } } return(ofts); } // PROFIT LOCK - By Robert Cochran -http://autoforex.biz bool ProfitLockStop() { if( OpenOrdersForThisEA() > 0 ) { for ( int i = 0; i < OrdersTotal(); i++ ){。 オーダーセレクト(i, SELECT_BY_POS, MODE_TRADES); //--- ロングトレード if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point && (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&) オーダーオープン価格() > OrderStopLoss()) { OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green)を実行します。 } } //--- ショートトレード if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() ==MagicNumber) { if (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && )) オーダーオープンプライス() < オーダーストップ()) { OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue)を実行します。 } } } } } // 見切り発車 bool RunAbandonCheck() { if( OpenOrdersForThisEA() > 0 ) { if (TradeBars == 0 && bartick == 0) { for (int i = 0; i < OrdersTotal(); i++) { if (OrderSymbol() == Symbol()) { TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period(); bartime = Time[0]; bartick = TradeBars; } } } if(bartime!=Time[0]) { bartime=Time[0]; bartick++; } } return(true)とする。 // RunAbandonMethods bool RunAbandonMethods() { if( OpenOrdersForThisEA() > 0 ) { for (int i = 0; i < OrdersTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (AbandonMethodA && bartick==Abandon)//Force "HEDGE" after abandon (放棄後) { // LONG TRADES if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&) オーダーマジック番号()==マジック番号) { オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,Blue); SetSell=true。 を続けてください。 } // ショートトレード if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&) オーダーマジック番号()==マジック番号) { OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue).SetBuy=true;。 SetBuy=true; を続ける。 } } if (AbandonMethodB && bartick==Abandon)//Indicators decide direction after abandon. { // ロングトレード if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&) オーダーマジック番号()==マジック番号) { オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,White); を実行します。 } // ショートトレード if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && (オーダータイプ() == OP_SELL && オーダーシンボル() == シンボル() &&) オーダーマジック番号()==マジック番号) { OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White)。 を実行します。 } } } } return(true)。 } // RunPairSpesificSettings bool RunPairSpesificSettings() { // シンボルの最適化を設定する if (Symbol()=="GBPUSD") { TakeProfit=55、StopLoss=100、Abandon=69。 } return(true); // RunNewOrderManagement(ランニューオーダーマネジメント bool RunNewOrderManagement() { ダブルTP,SL; if( OpenOrdersForThisEA() < maxTradesPerPair ) { //ENTRY Ask(買い、ロング) if (買いシグナル || 買い設定) { SL = Ask - StopLoss*Point; TP = Ask + TakeProfit*Point; OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White); bartick=0; if (SetBuy) SetBuy=false。 return(true)とします。 } //ENTRY ビッド(売り、ショート) if (SellSignal || SetSell) { SL = Bid + StopLoss*Point; TP = Bid - TakeProfit*Point; OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red); bartick=0; if (SetSell) SetSell=false。 return(true)。 } } return(true)。 } Coding help please, look into this コーディングの方法は? Mladen Rakic 2013.07.04 09:46 #1035 graphics: こんにちは、皆さん。このEAでストップロスを変更することができないようです。 何を変更しても変更されません。ストップロスを最低でも300に変更したいのですが。何かアイデアはありますか? よろしくお願いします。 これはそのためのコードです。 // 一般的なユーザー入力 extern double Lots=1.0; extern int TakeProfit=44; extern int StopLoss=90; extern bool RSIMethodA=false; extern bool RSIMethodB=true; extern bool RSIMethodB=true; extern int RSIValue=50; extern bool AbandonMethodA=true; extern bool AbandonMethodB=false; extern int RSIValue=50; extern bool AbandonMethodB=false; extern int Abandon=101; extern bool MoneyManagement=true; extern int Risk=2; extern int Slippage=3; extern bool UseProfitLock=true; extern int BreakEvenTrigger=25; extern int BreakEven=3; extern int BreakEvenTrigger=25; extern int BreakEven=3; extern bool LiveTrading=false; extern int BreakEven=3; extern int LiveTrading=false; extern bool AccountIsMini=false; extern int maxTradesPerPair=1; extern int MagicNumber=5432; double lotMM; bool BuySignal=false; bool SetBuy=false。 bool SellSignal=false; bool SetSell=false(ブール セットセル=ファルス)。 // バー処理 datetime bartime=0; int bartick=0; int TradeBars=0; //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| エキスパートスタート機能 //+------------------------------------------------------------------+ int start() { //---- if (UseProfitLock) ProfitLockStop()。 if (AbandonMethodA || AbandonMethodB) { RunAbandonCheck(); RunAbandonMethods()を実行します。 if (!SetLotsMM()) return(0); RunOrderTriggerCalculations(); RunPairSpesificSettings(); RunNewOrderManagement(); //---- return(0); } // SetLotsMM - ロバートコクランによって歓迎autoforex.biz - BlueHost.com。 bool SetLotsMM() { double MarginCutoff; if(!AccountIsMini) MarginCutoff = 1000; if( AccountIsMini) MarginCutoff = 100; if( AccountFreeMargin) MarginCutoff = 100; if(AccountFreeMargin() < MarginCutoff) return(false); if(MoneyManagement) { lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10; if(lotMM < 0.1) lotMM = Lots; if(lotMM > 1.0) lotMM = MathCeil(lotMM); // ロットサイズの境界を強制する if(LiveTrading) { if( AccountIsMini) lotMM = lotMM * 10; if(!AccountIsMini && lotMM < 1.0) lotMM = 1.0; } if(lotMM > 100) lotMM = 100; } それ以外 { lotMM = Lots; // Lots パラメータを有効にしたい場合は、MoneyManagement を 0 に変更します。 } return(true); } //+------------------------------------------------------------------+ // RunOrderTriggerCalculations(ランオーダートリガー計算書 bool RunOrderTriggerCalculations() { bool RSIPOS=false; bool RSINEG=false; // バー[1]の3期間移動平均線 double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1); // バー[1]での7期間移動平均 double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1); // バー[2]の2期間移動平均 double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2); double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1); // RSIがどの極性であるかを判断 if (RSIMethodA) { if(RSI>RSIValue && RSI2<RSIValue) { RSIPOS=trueとする。 RSINEG=false。 } else RSIPOS=false。 if(RSISIRValue) { RSIPOS=falseとする。 RSINEG=true。 } else RSINEG=false。 } if (RSIMethodB) { if(RSI>RSIValue) { RSIPOS=trueとする。 RSINEG=false。 } if(RSI<RSIValue) { RSIPOS=false。 RSINEG=true。 } } if ((bullMA3 > (bearMA7+Point)) && RSINEG) { BuySignal=true。 } else BuySignal=false。 if ((bullMA3 < (bearMA7-Point)) && RSIPOS) { SellSignal=trueとする。 } else SellSignal=false。 return(true)とする。 // OpenOrdersBySymbolAndComment(オープンオーダーズバイシンボルアンドコメント int OpenOrdersForThisEA() { int ofts=0; for(int x=0;x<OrdersTotal();x++) { OrderSelect(x, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { オーダーシンボル()==シンボル() && オーダーマジック番号()==マジック番号() { ofts++; } } return(ofts); } // PROFIT LOCK - ロバートコクランによって -ようこそ autoforex.biz - BlueHost.com bool ProfitLockStop() { if( OpenOrdersForThisEA() > 0 ) { for ( int i = 0; i < OrdersTotal(); i++ ){。 オーダーセレクト(i, SELECT_BY_POS, MODE_TRADES); //--- ロングトレード if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) { if (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point && (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&) オーダーオープン価格() > OrderStopLoss()) { OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green)を実行します。 } } //--- ショートトレード if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() ==MagicNumber) { if (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && )) オーダーオープンプライス() < オーダーストップ()) { OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue)を実行します。 } } } } } // 見切り発車 bool RunAbandonCheck() { if( OpenOrdersForThisEA() > 0 ) { if (TradeBars == 0 && bartick == 0) { for (int i = 0; i < OrdersTotal(); i++) { if (OrderSymbol() == Symbol()) { TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period(); bartime = Time[0]; bartick = TradeBars; } } } if(bartime!=Time[0]) { bartime=Time[0]; bartick++; } } return(true)とする。 // RunAbandonMethods bool RunAbandonMethods() { if( OpenOrdersForThisEA() > 0 ) { for (int i = 0; i < OrdersTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (AbandonMethodA && bartick==Abandon)//Force "HEDGE" after abandon (放棄後) { // LONG TRADES if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&) オーダーマジック番号()==マジック番号) { オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,Blue); SetSell=true。 を続けてください。 } // ショートトレード if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&) オーダーマジック番号()==マジック番号) { OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue).SetBuy=true;。 SetBuy=true; を続ける。 } } if (AbandonMethodB && bartick==Abandon)//Indicators decide direction after abandon. { // ロングトレード if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&) オーダーマジック番号()==マジック番号) { オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,White); を実行します。 } // ショートトレード if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && (オーダータイプ() == OP_SELL && オーダーシンボル() == シンボル() &&) オーダーマジック番号()==マジック番号) { OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White)。 を実行します。 } } } } return(true)。 } // RunPairSpesificSettings bool RunPairSpesificSettings() { // シンボルの最適化を設定する if (Symbol()=="GBPUSD") { TakeProfit=55、StopLoss=100、Abandon=69。 } return(true); // RunNewOrderManagement(ランニューオーダーマネジメント bool RunNewOrderManagement() { ダブルTP,SL; if( OpenOrdersForThisEA() < maxTradesPerPair ) { //ENTRY Ask(買い、ロング) if (買いシグナル || 買い設定) { SL = Ask - StopLoss*Point; TP = Ask + TakeProfit*Point; OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White); bartick=0; if (SetBuy) SetBuy=false。 return(true)とします。 } //ENTRY ビッド(売り、ショート) if (SellSignal || SetSell) { SL = Bid + StopLoss*Point; TP = Bid - TakeProfit*Point; OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red); bartick=0; if (SetSell) SetSell=false。 return(true)。 } } return(true)。 } シンボルがGBPUSDの場合、StopLossは常に100に設定されます。 その他の場合は問題なく動作します(ただし、EAはピップではなくポイントで動作するため、5桁のブローカーではストップロスを10倍する必要があります)。 chris 2013.07.04 09:55 #1036 現在、USD/JPYで使用していますが、ストップロスは まだ100のままです。 ストップロスの倍率はどこにあるのでしょうか? Mladen Rakic 2013.07.04 10:07 #1037 graphics: 現在USD/JPYで使用していますが、ストップロスはまだ100のままです。 ストップロス倍率はどこにあるのでしょうか? ストップロスとテイクプロフィットは この部分で設定します。 bool RunNewOrderManagement() { double TP,SL; if( OpenOrdersForThisEA() < maxTradesPerPair ) { //ENTRY Ask(buy, long) if (BuySignal || SetBuy) { SL = Ask - StopLoss*Point; TP = Ask + TakeProfit*Point; OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP ,"TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White); bartick=0; if (SetBuy) SetBuy=false; return(true); } //ENTRY Bid (sell, short) if (SellSignal || SetSell) { SL = Bid + StopLoss*Point; TP = Bid - TakeProfit*Point; OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,T P,"TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red); bartick=0; if (SetSell) SetSell=false; return(true); } } return(true); }[/PHP] As of stop loss that stays 100 : this part of code [PHP]bool RunPairSpesificSettings() { // set up the symbol optimizations if (Symbol()=="GBPUSD") { TakeProfit=55; StopLoss=100; Abandon=69; } return(true); } はシンボルが "GBPUSD "の場合のみ有効であり、その場合のみ元に戻ります。あなたのコードをもう一度チェックして、100を探せば、あなたのストップロスに何が起こっているのかがわかるでしょう。 Coding help please, look into this How to code? chris 2013.07.04 12:15 #1038 通貨ペアを 取引している通貨ペアに変えても、ストップロスを変更しない。ストップロスを変更できれば、このEAは完璧でした。 とにかく助けようとしてくれてありがとうございました。 削除済み 2013.07.05 02:41 #1039 こんにちは、コーダーです。 このスクイーズブレイクをEMAボリンジャーバンドと EMAケルトナーチャネルのオプションに変更したいのですが、どなたか手伝っていただけませんか? ありがとうございます:) ファイル: squeeze_break.mq4 11 kb William Snyder 2013.07.05 03:42 #1040 iwillsurvive: こんにちは、コーダー。このスクイーズブレイクインジケーターを、EMA ボリンジャーバンドと EMA ケルトナー チャネルのオプションがあるように変更したいのですが、どなたかお知ら せ願えませんでしょうか。 ありがとうございます:) こんにちは、Iwillsurvive。ケルトナーバンドとボリンジャーバンドの 両方でMAを選択できるようにインディケータを変更しました。 ファイル: squeeze_break_v1.mq4 11 kb 1...979899100101102103104105106107108109110111...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ありがとう、Mladen.あなたは素晴らしいです.
こんにちは、皆さん。
103ページにある私のリクエストについて、何かお手伝いできることはありますか?私はオンラインで情報を探していますが、(時間の先頭から始まる)5小節ごとにオフにするアラートを取得できませんでした。
ありがとうございました。
親愛なるMladen/Mr Tools このEAを修正して、ストップまたはTPがヒットしたときに、取引を再開しないようにしてください。
ストップロスに関するコーディングのヘルプ
こんにちは、皆さん。
私はこのEAを持っていますが、ストップロスを変更することができないようです。
何を変更しても、変更されません。私はストップロスを少なくとも300に変更したいと思います。何かアイデアはありますか?
よろしくお願いします。
これはそのためのコードです。
// 一般的なユーザー入力
extern double Lots=1.0;
extern int TakeProfit=44;
extern int StopLoss=90;
extern bool RSIMethodA=false;
extern bool RSIMethodB=true; extern bool RSIMethodB=true;
extern int RSIValue=50;
extern bool AbandonMethodA=true;
extern bool AbandonMethodB=false; extern int RSIValue=50; extern bool AbandonMethodB=false;
extern int Abandon=101;
extern bool MoneyManagement=true;
extern int Risk=2;
extern int Slippage=3;
extern bool UseProfitLock=true;
extern int BreakEvenTrigger=25;
extern int BreakEven=3; extern int BreakEvenTrigger=25; extern int BreakEven=3;
extern bool LiveTrading=false; extern int BreakEven=3; extern int LiveTrading=false;
extern bool AccountIsMini=false;
extern int maxTradesPerPair=1;
extern int MagicNumber=5432;
double lotMM;
bool BuySignal=false;
bool SetBuy=false。
bool SellSignal=false;
bool SetSell=false(ブール セットセル=ファルス)。
// バー処理
datetime bartime=0;
int bartick=0;
int TradeBars=0;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
//----
if (UseProfitLock) ProfitLockStop()。
if (AbandonMethodA || AbandonMethodB)
{
RunAbandonCheck();
RunAbandonMethods()を実行します。
if (!SetLotsMM()) return(0);
RunOrderTriggerCalculations();
RunPairSpesificSettings();
RunNewOrderManagement();
//----
return(0);
}
// SetLotsMM - ロバート・コクラン氏http://autoforex.biz
bool SetLotsMM()
{
double MarginCutoff;
if(!AccountIsMini) MarginCutoff = 1000;
if( AccountIsMini) MarginCutoff = 100; if( AccountFreeMargin) MarginCutoff = 100;
if(AccountFreeMargin() < MarginCutoff) return(false);
if(MoneyManagement)
{
lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10;
if(lotMM < 0.1) lotMM = Lots;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
// ロットサイズの境界を強制する
if(LiveTrading)
{
if( AccountIsMini) lotMM = lotMM * 10;
if(!AccountIsMini && lotMM < 1.0) lotMM = 1.0;
}
if(lotMM > 100) lotMM = 100;
}
それ以外
{
lotMM = Lots; // Lots パラメータを有効にしたい場合は、MoneyManagement を 0 に変更します。
}
return(true);
}
//+------------------------------------------------------------------+
// RunOrderTriggerCalculations(ランオーダートリガー計算書
bool RunOrderTriggerCalculations()
{
bool RSIPOS=false;
bool RSINEG=false;
// バー[1]の3期間移動平均線
double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);
// バー[1]での7期間移動平均
double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);
// バー[2]の2期間移動平均
double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);
double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1);
// RSIがどの極性であるかを判断
if (RSIMethodA)
{
if(RSI>RSIValue && RSI2<RSIValue)
{
RSIPOS=trueとする。
RSINEG=false。
}
else RSIPOS=false。
if(RSISIRValue)
{
RSIPOS=falseとする。
RSINEG=true。
}
else RSINEG=false。
}
if (RSIMethodB)
{
if(RSI>RSIValue)
{
RSIPOS=trueとする。
RSINEG=false。
}
if(RSI<RSIValue)
{
RSIPOS=false。
RSINEG=true。
}
}
if ((bullMA3 > (bearMA7+Point)) && RSINEG)
{
BuySignal=true。
}
else BuySignal=false。
if ((bullMA3 < (bearMA7-Point)) && RSIPOS)
{
SellSignal=trueとする。
}
else SellSignal=false。
return(true)とする。
// OpenOrdersBySymbolAndComment(オープンオーダーズバイシンボルアンドコメント
int OpenOrdersForThisEA()
{
int ofts=0;
for(int x=0;x<OrdersTotal();x++)
{
OrderSelect(x, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { オーダーシンボル()==シンボル() && オーダーマジック番号()==マジック番号()
{
ofts++;
}
}
return(ofts);
}
// PROFIT LOCK - By Robert Cochran -http://autoforex.biz
bool ProfitLockStop()
{
if( OpenOrdersForThisEA() > 0 )
{
for ( int i = 0; i < OrdersTotal(); i++ ){。
オーダーセレクト(i, SELECT_BY_POS, MODE_TRADES);
//--- ロングトレード
if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point && (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&)
オーダーオープン価格() > OrderStopLoss())
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green)を実行します。
}
}
//--- ショートトレード
if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() ==MagicNumber)
{
if (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && ))
オーダーオープンプライス() < オーダーストップ())
{
OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue)を実行します。
}
}
}
}
}
// 見切り発車
bool RunAbandonCheck()
{
if( OpenOrdersForThisEA() > 0 )
{
if (TradeBars == 0 && bartick == 0)
{
for (int i = 0; i < OrdersTotal(); i++)
{
if (OrderSymbol() == Symbol())
{
TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period();
bartime = Time[0];
bartick = TradeBars;
}
}
}
if(bartime!=Time[0])
{
bartime=Time[0];
bartick++;
}
}
return(true)とする。
// RunAbandonMethods
bool RunAbandonMethods()
{
if( OpenOrdersForThisEA() > 0 )
{
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (AbandonMethodA && bartick==Abandon)//Force "HEDGE" after abandon (放棄後)
{
// LONG TRADES
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&)
オーダーマジック番号()==マジック番号)
{
オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,Blue);
SetSell=true。
を続けてください。
}
// ショートトレード
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&)
オーダーマジック番号()==マジック番号)
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue).SetBuy=true;。
SetBuy=true;
を続ける。
}
}
if (AbandonMethodB && bartick==Abandon)//Indicators decide direction after abandon.
{
// ロングトレード
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&)
オーダーマジック番号()==マジック番号)
{
オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,White);
を実行します。
}
// ショートトレード
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && (オーダータイプ() == OP_SELL && オーダーシンボル() == シンボル() &&)
オーダーマジック番号()==マジック番号)
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White)。
を実行します。
}
}
}
}
return(true)。
}
// RunPairSpesificSettings
bool RunPairSpesificSettings()
{
// シンボルの最適化を設定する
if (Symbol()=="GBPUSD")
{
TakeProfit=55、StopLoss=100、Abandon=69。
}
return(true);
// RunNewOrderManagement(ランニューオーダーマネジメント
bool RunNewOrderManagement()
{
ダブルTP,SL;
if( OpenOrdersForThisEA() < maxTradesPerPair )
{
//ENTRY Ask(買い、ロング)
if (買いシグナル || 買い設定)
{
SL = Ask - StopLoss*Point;
TP = Ask + TakeProfit*Point;
OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White);
bartick=0;
if (SetBuy) SetBuy=false。
return(true)とします。
}
//ENTRY ビッド(売り、ショート)
if (SellSignal || SetSell)
{
SL = Bid + StopLoss*Point;
TP = Bid - TakeProfit*Point;
OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red);
bartick=0;
if (SetSell) SetSell=false。
return(true)。
}
}
return(true)。
}
こんにちは、皆さん。
このEAでストップロスを変更することができないようです。
何を変更しても変更されません。ストップロスを最低でも300に変更したいのですが。何かアイデアはありますか?
よろしくお願いします。
これはそのためのコードです。
// 一般的なユーザー入力
extern double Lots=1.0;
extern int TakeProfit=44;
extern int StopLoss=90;
extern bool RSIMethodA=false;
extern bool RSIMethodB=true; extern bool RSIMethodB=true;
extern int RSIValue=50;
extern bool AbandonMethodA=true;
extern bool AbandonMethodB=false; extern int RSIValue=50; extern bool AbandonMethodB=false;
extern int Abandon=101;
extern bool MoneyManagement=true;
extern int Risk=2;
extern int Slippage=3;
extern bool UseProfitLock=true;
extern int BreakEvenTrigger=25;
extern int BreakEven=3; extern int BreakEvenTrigger=25; extern int BreakEven=3;
extern bool LiveTrading=false; extern int BreakEven=3; extern int LiveTrading=false;
extern bool AccountIsMini=false;
extern int maxTradesPerPair=1;
extern int MagicNumber=5432;
double lotMM;
bool BuySignal=false;
bool SetBuy=false。
bool SellSignal=false;
bool SetSell=false(ブール セットセル=ファルス)。
// バー処理
datetime bartime=0;
int bartick=0;
int TradeBars=0;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
//----
if (UseProfitLock) ProfitLockStop()。
if (AbandonMethodA || AbandonMethodB)
{
RunAbandonCheck();
RunAbandonMethods()を実行します。
if (!SetLotsMM()) return(0);
RunOrderTriggerCalculations();
RunPairSpesificSettings();
RunNewOrderManagement();
//----
return(0);
}
// SetLotsMM - ロバートコクランによって歓迎autoforex.biz - BlueHost.com。
bool SetLotsMM()
{
double MarginCutoff;
if(!AccountIsMini) MarginCutoff = 1000;
if( AccountIsMini) MarginCutoff = 100; if( AccountFreeMargin) MarginCutoff = 100;
if(AccountFreeMargin() < MarginCutoff) return(false);
if(MoneyManagement)
{
lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10;
if(lotMM < 0.1) lotMM = Lots;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
// ロットサイズの境界を強制する
if(LiveTrading)
{
if( AccountIsMini) lotMM = lotMM * 10;
if(!AccountIsMini && lotMM < 1.0) lotMM = 1.0;
}
if(lotMM > 100) lotMM = 100;
}
それ以外
{
lotMM = Lots; // Lots パラメータを有効にしたい場合は、MoneyManagement を 0 に変更します。
}
return(true);
}
//+------------------------------------------------------------------+
// RunOrderTriggerCalculations(ランオーダートリガー計算書
bool RunOrderTriggerCalculations()
{
bool RSIPOS=false;
bool RSINEG=false;
// バー[1]の3期間移動平均線
double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);
// バー[1]での7期間移動平均
double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);
// バー[2]の2期間移動平均
double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);
double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1);
// RSIがどの極性であるかを判断
if (RSIMethodA)
{
if(RSI>RSIValue && RSI2<RSIValue)
{
RSIPOS=trueとする。
RSINEG=false。
}
else RSIPOS=false。
if(RSISIRValue)
{
RSIPOS=falseとする。
RSINEG=true。
}
else RSINEG=false。
}
if (RSIMethodB)
{
if(RSI>RSIValue)
{
RSIPOS=trueとする。
RSINEG=false。
}
if(RSI<RSIValue)
{
RSIPOS=false。
RSINEG=true。
}
}
if ((bullMA3 > (bearMA7+Point)) && RSINEG)
{
BuySignal=true。
}
else BuySignal=false。
if ((bullMA3 < (bearMA7-Point)) && RSIPOS)
{
SellSignal=trueとする。
}
else SellSignal=false。
return(true)とする。
// OpenOrdersBySymbolAndComment(オープンオーダーズバイシンボルアンドコメント
int OpenOrdersForThisEA()
{
int ofts=0;
for(int x=0;x<OrdersTotal();x++)
{
OrderSelect(x, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { オーダーシンボル()==シンボル() && オーダーマジック番号()==マジック番号()
{
ofts++;
}
}
return(ofts);
}
// PROFIT LOCK - ロバートコクランによって -ようこそ autoforex.biz - BlueHost.com
bool ProfitLockStop()
{
if( OpenOrdersForThisEA() > 0 )
{
for ( int i = 0; i < OrdersTotal(); i++ ){。
オーダーセレクト(i, SELECT_BY_POS, MODE_TRADES);
//--- ロングトレード
if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point && (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&)
オーダーオープン価格() > OrderStopLoss())
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green)を実行します。
}
}
//--- ショートトレード
if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() ==MagicNumber)
{
if (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point && ))
オーダーオープンプライス() < オーダーストップ())
{
OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue)を実行します。
}
}
}
}
}
// 見切り発車
bool RunAbandonCheck()
{
if( OpenOrdersForThisEA() > 0 )
{
if (TradeBars == 0 && bartick == 0)
{
for (int i = 0; i < OrdersTotal(); i++)
{
if (OrderSymbol() == Symbol())
{
TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period();
bartime = Time[0];
bartick = TradeBars;
}
}
}
if(bartime!=Time[0])
{
bartime=Time[0];
bartick++;
}
}
return(true)とする。
// RunAbandonMethods
bool RunAbandonMethods()
{
if( OpenOrdersForThisEA() > 0 )
{
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (AbandonMethodA && bartick==Abandon)//Force "HEDGE" after abandon (放棄後)
{
// LONG TRADES
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&)
オーダーマジック番号()==マジック番号)
{
オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,Blue);
SetSell=true。
を続けてください。
}
// ショートトレード
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&)
オーダーマジック番号()==マジック番号)
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue).SetBuy=true;。
SetBuy=true;
を続ける。
}
}
if (AbandonMethodB && bartick==Abandon)//Indicators decide direction after abandon.
{
// ロングトレード
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&)
オーダーマジック番号()==マジック番号)
{
オーダークローズ(OrderTicket(),OrderLots(),Bid,Slippage,White);
を実行します。
}
// ショートトレード
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && (オーダータイプ() == OP_SELL && オーダーシンボル() == シンボル() &&)
オーダーマジック番号()==マジック番号)
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White)。
を実行します。
}
}
}
}
return(true)。
}
// RunPairSpesificSettings
bool RunPairSpesificSettings()
{
// シンボルの最適化を設定する
if (Symbol()=="GBPUSD")
{
TakeProfit=55、StopLoss=100、Abandon=69。
}
return(true);
// RunNewOrderManagement(ランニューオーダーマネジメント
bool RunNewOrderManagement()
{
ダブルTP,SL;
if( OpenOrdersForThisEA() < maxTradesPerPair )
{
//ENTRY Ask(買い、ロング)
if (買いシグナル || 買い設定)
{
SL = Ask - StopLoss*Point;
TP = Ask + TakeProfit*Point;
OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White);
bartick=0;
if (SetBuy) SetBuy=false。
return(true)とします。
}
//ENTRY ビッド(売り、ショート)
if (SellSignal || SetSell)
{
SL = Bid + StopLoss*Point;
TP = Bid - TakeProfit*Point;
OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red);
bartick=0;
if (SetSell) SetSell=false。
return(true)。
}
}
return(true)。
}シンボルがGBPUSDの場合、StopLossは常に100に設定されます。
その他の場合は問題なく動作します(ただし、EAはピップではなくポイントで動作するため、5桁のブローカーではストップロスを10倍する必要があります)。
現在、USD/JPYで使用していますが、ストップロスは まだ100のままです。
ストップロスの倍率はどこにあるのでしょうか?
現在USD/JPYで使用していますが、ストップロスはまだ100のままです。 ストップロス倍率はどこにあるのでしょうか?
ストップロスとテイクプロフィットは この部分で設定します。
{
double TP,SL;
if( OpenOrdersForThisEA() < maxTradesPerPair )
{
//ENTRY Ask(buy, long)
if (BuySignal || SetBuy)
{
SL = Ask - StopLoss*Point;
TP = Ask + TakeProfit*Point;
OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP ,"TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White);
bartick=0;
if (SetBuy) SetBuy=false;
return(true);
}
//ENTRY Bid (sell, short)
if (SellSignal || SetSell)
{
SL = Bid + StopLoss*Point;
TP = Bid - TakeProfit*Point;
OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,T P,"TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red);
bartick=0;
if (SetSell) SetSell=false;
return(true);
}
}
return(true);
}[/PHP]
As of stop loss that stays 100 : this part of code
[PHP]bool RunPairSpesificSettings()
{
// set up the symbol optimizations
if (Symbol()=="GBPUSD")
{
TakeProfit=55; StopLoss=100; Abandon=69;
}
return(true);
}はシンボルが "GBPUSD "の場合のみ有効であり、その場合のみ元に戻ります。あなたのコードをもう一度チェックして、100を探せば、あなたのストップロスに何が起こっているのかがわかるでしょう。
通貨ペアを 取引している通貨ペアに変えても、ストップロスを変更しない。ストップロスを変更できれば、このEAは完璧でした。
とにかく助けようとしてくれてありがとうございました。
こんにちは、コーダーです。
このスクイーズブレイクをEMAボリンジャーバンドと EMAケルトナーチャネルのオプションに変更したいのですが、どなたか手伝っていただけませんか?
ありがとうございます:)
こんにちは、コーダー。
このスクイーズブレイクインジケーターを、EMA ボリンジャーバンドと EMA ケルトナー チャネルのオプションがあるように変更したいのですが、どなたかお知ら せ願えませんでしょうか。
ありがとうございます:)こんにちは、Iwillsurvive。ケルトナーバンドとボリンジャーバンドの 両方でMAを選択できるようにインディケータを変更しました。