编码帮助 - 页 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,使其在碰到止损或止赢时不重新开仓。 附加的文件: 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 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); } 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 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的工作是以点为单位,而不是以点为单位)。 chris 2013.07.04 09:55 #1036 我目前在美元/日元上使用它,止损 仍然停留在100。 我在哪里可以找到止损乘数? Mladen Rakic 2013.07.04 10:07 #1037 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的情况下,止损才会被恢复。 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,我修改了指标,这样你就可以在keltner和布林带 中选择ma了,默认情况下,它被设置为EMA。 附加的文件: squeeze_break_v1.mq4 11 kb 1...979899100101102103104105106107108109110111...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你,Mladen ....你是伟大的...
嗨,伙计们。
对我在第103页的请求有什么帮助吗?我一直在网上寻找信息,但无法让每5个小节的警报响起(从小时的顶部开始)。
谢谢你的帮助
尊敬的Mladen/Mr Tools 能否请你修复这个EA,使其在碰到止损或止赢时不重新开仓。
止损的编码帮助
嗨,伙计们。
我有这个EA,但我似乎无法改变它的止损。
无论我怎么改变,它都不会改变。我想把止损改成至少300。有什么想法吗?
谢谢。![](https://c.mql5.com/forextsd/smiles/angel_smile.png)
这是它的代码。
// 通用用户输入
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);
}
嗨,伙计们。
我有这个EA,但我似乎无法改变它的止损。
无论我怎么改变,它都不会改变。我想把止损改为至少300。有什么想法吗?
谢谢。![](https://c.mql5.com/forextsd/smiles/angel_smile.png)
这是它的代码。
// 通用用户输入
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。
我在哪里可以找到止损乘数?
我现在在美元/日元上使用它,止损仍然保持在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,你会发现你的止损是怎么回事,因为在你所附的代码中,只有在GBPUSD的情况下,止损才会被恢复。
它仍然不会改变止损,即使我把货币对 改为我正在交易的货币对。如果能改变止损,这个EA将是完美的。![](https://c.mql5.com/forextsd/smiles/frown.png)
谢谢你的帮助。
编码员你好。
有谁能帮助修改这个挤压破损指标,使其具有EMA布林带 选项和EMA克尔纳通道选项?
谢谢
:)
嗨,编码员。
有谁能帮助修改这个挤压破损指标,使其有一个EMA布林带选项以及一个EMA凯尔特人通道选项?
谢谢你好,Iwillsurvive,我修改了指标,这样你就可以在keltner和布林带 中选择ma了,默认情况下,它被设置为EMA。