编码帮助 - 页 104

 

谢谢你,Mladen ....你是伟大的...

 

嗨,伙计们。

对我在第103页的请求有什么帮助吗?我一直在网上寻找信息,但无法让每5个小节的警报响起(从小时的顶部开始)。

谢谢你的帮助

 

尊敬的Mladen/Mr Tools 能否请你修复这个EA,使其在碰到止损或止赢时不重新开仓。

附加的文件:
 

止损的编码帮助

嗨,伙计们。

我有这个EA,但我似乎无法改变它的止损。

无论我怎么改变,它都不会改变。我想把止损改成至少300。有什么想法吗?

谢谢。

这是它的代码。

// 通用用户输入

extern double Lots=1.0;

extern int TakeProfit=44;

extern int StopLoss=90;

extern bool RSIMethodA=false;

extern bool RSIMethodB=true;

extern int RSIValue=50;

extern bool AbandonMethodA=true;

外置 bool AbandonMethodB=false;

extern int Abandon=101;

extern bool MoneyManagement=true;

extern int Risk=2;

extern int Slippage=3;

外部 bool UseProfitLock=true;

extern int BreakEvenTrigger=25;

extern int BreakEven=3;

外部 bool 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()

{

//----

如果(UseProfitLock) ProfitLockStop()。

如果(AbandonMethodA || AbandonMethodB)

{

RunAbandonCheck()。

RunAbandonMethods()。

}

if (!SetLotsMM()) return(0);

RunOrderTriggerCalculations();

RunPairSpesificSettings()。

RunNewOrderManagement()。

//----

return(0);

}

/////////////////////////////////////////////////

// SetLotsMM - 作者:Robert Cochranhttp://autoforex.biz

/////////////////////////////////////////////////

bool SetLotsMM()

{

双重MarginCutoff。

if(!AccountIsMini) MarginCutoff = 1000;

if( AccountIsMini) MarginCutoff = 100;

if(AccountFreeMargin() < MarginCutoff) return(false);

如果(MoneyManagement)

{

lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10;

如果(lotMM < 0.1) lotMM = Lots;

如果(lotMM > 1.0) lotMM = MathCeil(lotMM);

// 强制执行手数的界限

如果(LiveTrading)

{

if( AccountIsMini) lotMM = lotMM * 10;

如果(!AccountIsMini && lotMM < 1.0) lotMM = 1.0;

}

如果(lotMM > 100) lotMM = 100;

}

否则

{

lotMM = Lots; // 如果你想让Lots参数生效,将MoneyManagement改为0

}

return(true);

}

//+------------------------------------------------------------------+

/////////////////////////////////////////////////

// RunOrderTriggerCalculations

/////////////////////////////////////////////////

bool RunOrderTriggerCalculations()

{

bool RSIPOS=false;

bool RSINEG=false;

// Bar[1]上的3周期移动平均线

double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);

// 在Bar[1]上的7周期移动平均线

double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);

// Bar[2]上的2周期移动平均线

double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);

double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1);

// 确定RSI的极性是什么

如果(RSIMethodA)

{

if(RSI>RSIValue && RSI2<RSIValue)

{

RSIPOS=真。

RSINEG=false。

}

否则RSIPOS=false。

如果(RSIRSIValue)

{

RSIPOS=false。

RSINEG=真。

}

否则RSINEG=false。

}

如果(RSIMethodB)

{

如果(RSI>RSIValue)

{

RSIPOS=真。

RSINEG=false。

}

如果(RSI<RSIValue)

{

RSIPOS=false。

RSINEG=真。

}

}

如果((bullMA3 > (bearMA7+Point)) && RSINEG)

{

BuySignal=true。

}

否则BuySignal=false。

如果((bullMA3 < (bearMA7-Point)) && RSIPOS)

{

SellSignal=true;

}

否则SellSignal=false。

return(true);

}

/////////////////////////////////////////////////

// OpenOrdersBySymbolAndComment

/////////////////////////////////////////////////

int OpenOrdersForThisEA()

{

int ofts=0;

for(int x=0;x<OrdersTotal();x++)

{

OrderSelect(x, SELECT_BY_POS, MODE_TRADES)。

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

ofts++;

}

}

return(ofts);

}

/////////////////////////////////////////////////

// 利润锁 - 作者:Robert Cochran -http://autoforex.biz

/////////////////////////////////////////////////

bool ProfitLockStop()

{

如果( OpenOrdersForThisEA() > 0 )

{

for ( int i = 0; i < OrdersTotal(); i++){

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

//---长线交易

如果(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{

如果(Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&)

OrderOpenPrice() > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green)。

}

}

//---空头交易

如果(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() ==MagicNumber)

{

如果(Ask <= OrderOpenPrice() - BreakEvenTrigger*Point &&)

OrderOpenPrice() < OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue);

}

}

}

}

}

/////////////////////////////////////////////////

// 放弃检查

/////////////////////////////////////////////////

bool RunAbandonCheck()

{

如果( OpenOrdersForThisEA() > 0 )

{

如果(TradeBars == 0 && bartick == 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

如果(OrderSymbol() == Symbol()

{

TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period()。

bartime = Time[0];

bartick = TradeBars;

}

}

}

如果(bartime!=Time[0])

{

bartime=Time[0];

bartick++;

}

}

return(true);

}

/////////////////////////////////////////////////

// RunAbandonMethods

/////////////////////////////////////////////////

bool RunAbandonMethods()

{

如果( OpenOrdersForThisEA() > 0 )

{

for (int i = 0; i < OrdersTotal(); i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

如果(AbandonMethodA && bartick==Abandon)//放弃后执行 "HEDGE"。

{

//长线交易

如果(OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue)。

SetSell=true。

继续。

}

// 空头交易

如果(OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue);

SetBuy=true。

继续。

}

}

如果(AbandonMethodB && bartick==Abandon)//指标决定放弃后的方向

{

//长线交易

如果 (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White)。

继续。

}

// 空头交易

如果(OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White)。

继续。

}

}

}

}

return(true);

}

/////////////////////////////////////////////////

// RunPairSpesificSettings

/////////////////////////////////////////////////

bool RunPairSpesificSettings()

{

// 设置符号的优化

如果(Symbol()=="GBPUSD")

{

TakeProfit=55; StopLoss=100; Abandon=69;

}

return(true);

}

/////////////////////////////////////////////////

// RunNewOrderManagement

/////////////////////////////////////////////////

bool RunNewOrderManagement()

{

双TP,SL;

如果( OpenOrdersForThisEA() < maxTradesPerPair )

{

//ENTRY Ask(buy, long)

如果(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。

如果(SetBuy)SetBuy=false。

return(true);

}

//ENTRY Bid (sell, short)

如果(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。

如果(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 int RSIValue=50;

extern bool AbandonMethodA=true;

外置 bool AbandonMethodB=false;

extern int Abandon=101;

extern bool MoneyManagement=true;

extern int Risk=2;

extern int Slippage=3;

外部 bool UseProfitLock=true;

extern int BreakEvenTrigger=25;

extern int BreakEven=3;

外部 bool 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()

{

//----

如果(UseProfitLock) ProfitLockStop()。

如果(AbandonMethodA || AbandonMethodB)

{

RunAbandonCheck()。

RunAbandonMethods()。

}

if (!SetLotsMM()) return(0);

RunOrderTriggerCalculations();

RunPairSpesificSettings()。

RunNewOrderManagement()。

//----

return(0);

}

/////////////////////////////////////////////////

// SetLotsMM - By Robert CochranWelcome autoforex.biz - BlueHost.com

/////////////////////////////////////////////////

bool SetLotsMM()

{

double MarginCutoff;

if(!AccountIsMini) MarginCutoff = 1000;

if( AccountIsMini) MarginCutoff = 100;

if(AccountFreeMargin() < MarginCutoff) return(false);

如果(MoneyManagement)

{

lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10;

如果(lotMM < 0.1) lotMM = Lots;

如果(lotMM > 1.0) lotMM = MathCeil(lotMM);

// 强制执行手数的界限

如果(LiveTrading)

{

if( AccountIsMini) lotMM = lotMM * 10;

如果(!AccountIsMini && lotMM < 1.0) lotMM = 1.0;

}

如果(lotMM > 100) lotMM = 100;

}

否则

{

lotMM = Lots; // 如果你想让Lots参数生效,将MoneyManagement改为0

}

return(true);

}

//+------------------------------------------------------------------+

/////////////////////////////////////////////////

// RunOrderTriggerCalculations

/////////////////////////////////////////////////

bool RunOrderTriggerCalculations()

{

bool RSIPOS=false;

bool RSINEG=false;

// Bar[1]上的3周期移动平均线

double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);

// 在Bar[1]上的7周期移动平均线

double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);

// Bar[2]上的2周期移动平均线

double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);

double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1);

// 确定RSI的极性是什么

如果(RSIMethodA)

{

如果(RSI>RSIValue && RSI2<RSIValue)

{

RSIPOS=真。

RSINEG=false。

}

否则RSIPOS=false。

如果(RSIRSIValue)

{

RSIPOS=false。

RSINEG=真。

}

否则RSINEG=false。

}

如果(RSIMethodB)

{

如果(RSI>RSIValue)

{

RSIPOS=真。

RSINEG=false。

}

如果(RSI<RSIValue)

{

RSIPOS=false。

RSINEG=真。

}

}

如果((bullMA3 > (bearMA7+Point)) && RSINEG)

{

BuySignal=true。

}

否则BuySignal=false。

如果((bullMA3 < (bearMA7-Point)) && RSIPOS)

{

SellSignal=true;

}

否则SellSignal=false。

return(true);

}

/////////////////////////////////////////////////

// OpenOrdersBySymbolAndComment

/////////////////////////////////////////////////

int OpenOrdersForThisEA()

{

int ofts=0;

for(int x=0;x<OrdersTotal();x++)

{

OrderSelect(x, SELECT_BY_POS, MODE_TRADES)。

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

ofts++;

}

}

return(ofts);

}

/////////////////////////////////////////////////

// 盈利锁 - 作者:Robert Cochran -欢迎autoforex.biz - BlueHost.com

/////////////////////////////////////////////////

bool ProfitLockStop()

{

如果( OpenOrdersForThisEA() > 0 )

{

for ( int i = 0; i < OrdersTotal(); i++){

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

//---长线交易

如果(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)

{

如果(Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&)

OrderOpenPrice() > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green)。

}

}

//---空头交易

如果(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() ==MagicNumber)

{

如果(Ask <= OrderOpenPrice() - BreakEvenTrigger*Point &&)

OrderOpenPrice() < OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue);

}

}

}

}

}

/////////////////////////////////////////////////

// 放弃检查

/////////////////////////////////////////////////

bool RunAbandonCheck()

{

如果( OpenOrdersForThisEA() > 0 )

{

如果(TradeBars == 0 && bartick == 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

如果(OrderSymbol() == Symbol()

{

TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period()。

bartime = Time[0];

bartick = TradeBars;

}

}

}

如果(bartime!=Time[0])

{

bartime=Time[0];

bartick++;

}

}

return(true);

}

/////////////////////////////////////////////////

// RunAbandonMethods

/////////////////////////////////////////////////

bool RunAbandonMethods()

{

如果( OpenOrdersForThisEA() > 0 )

{

for (int i = 0; i < OrdersTotal(); i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

如果(AbandonMethodA && bartick==Abandon)//放弃后执行 "HEDGE"。

{

//长线交易

如果(OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue)。

SetSell=true。

继续。

}

// 空头交易

如果(OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue);

SetBuy=true。

继续。

}

}

如果(AbandonMethodB && bartick==Abandon)//指标决定放弃后的方向

{

//长线交易

如果 (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White)。

继续。

}

// 空头交易

如果(OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White)。

继续。

}

}

}

}

return(true);

}

/////////////////////////////////////////////////

// RunPairSpesificSettings

/////////////////////////////////////////////////

bool RunPairSpesificSettings()

{

// 设置符号的优化

如果(Symbol()=="GBPUSD")

{

TakeProfit=55; StopLoss=100; Abandon=69;

}

return(true);

}

/////////////////////////////////////////////////

// RunNewOrderManagement

/////////////////////////////////////////////////

bool RunNewOrderManagement()

{

双TP,SL;

如果( OpenOrdersForThisEA() < maxTradesPerPair )

{

//ENTRY Ask(buy, long)

如果(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。

如果(SetBuy)SetBuy=false。

return(true);

}

//ENTRY Bid (sell, short)

如果 (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。

如果(SetSell)SetSell=false。

return(true);

}

}

return(true);

}

如果符号是GBPUSD,它将总是设置StopLoss为100。

对于其他的,它应该可以工作(除了对于5位数的经纪商,你应该把止损乘以10,因为EA的工作是以点为单位,而不是以点为单位)。

 

我目前在美元/日元上使用它,止损 仍然停留在100。

我在哪里可以找到止损乘数?

 
graphics:
我现在在美元/日元上使用它,止损仍然保持在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,你会发现你的止损是怎么回事,因为在你所附的代码中,只有在GBPUSD的情况下,止损才会被恢复。

 

它仍然不会改变止损,即使我把货币对 改为我正在交易的货币对。如果能改变止损,这个EA将是完美的。

谢谢你的帮助。

 

编码员你好。

有谁能帮助修改这个挤压破损指标,使其具有EMA布林带 选项和EMA克尔纳通道选项?

谢谢:)

附加的文件:
 
iwillsurvive:
嗨,编码员。

有谁能帮助修改这个挤压破损指标,使其有一个EMA布林带选项以及一个EMA凯尔特人通道选项?

谢谢:)

你好,Iwillsurvive,我修改了指标,这样你就可以在keltner和布林带 中选择ma了,默认情况下,它被设置为EMA。

附加的文件: