コーディングのヘルプ - ページ 104

 

ありがとう、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)。

}

 
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倍する必要があります)。

 

現在、USD/JPYで使用していますが、ストップロスは まだ100のままです。

ストップロスの倍率はどこにあるのでしょうか?

 
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を探せば、あなたのストップロスに何が起こっているのかがわかるでしょう。

 

通貨ペアを 取引している通貨ペアに変えても、ストップロスを変更しない。ストップロスを変更できれば、このEAは完璧でした。

とにかく助けようとしてくれてありがとうございました。

 

こんにちは、コーダーです。

このスクイーズブレイクをEMAボリンジャーバンドと EMAケルトナーチャネルのオプションに変更したいのですが、どなたか手伝っていただけませんか?

ありがとうございます:)

ファイル:
 
iwillsurvive:
こんにちは、コーダー。

このスクイーズブレイクインジケーターを、EMA ボリンジャーバンドと EMA ケルトナー チャネルのオプションがあるように変更したいのですが、どなたかお知ら せ願えませんでしょうか。

ありがとうございます:)

こんにちは、Iwillsurvive。ケルトナーバンドとボリンジャーバンドの 両方でMAを選択できるようにインディケータを変更しました。

ファイル: