如何编码? - 页 248

 
 

帮助--如何修改EA使现有交易保持开放状态

我需要一个相当简单的解决方案,如果有人能提供帮助的话

我有一个EA,现在是盈利的,但它同时开仓和平仓,所以在任何时候都只有一个交易是活跃的。

我现在想在一个现有的账户上运行它,该账户已经有一些现有的交易,我想让这些交易继续运行,但让EA继续打开和关闭它自己的交易,作为一个附带问题,当任何现有的交易变得有利可图时,它就会关闭这些。

如果能保持简单,可以忽略关闭现有交易的要求,如果需要,我可以手动关闭这些交易。

以下是我的EA目前使用的方法

if(val1 > val2) {trade_text = " BUY trade open";trend_text = "UP";BV=1; break;}

if(val1 < val2) {trade_text = " SELL trade open";trend_text = "DOWN";SV=1;break;} } }

// 专家资金管理

if(MM){if(Risk100){Comment("Invalid Risk Value.");return(0);}.

else{MML=MathFloor((AccountFreeMargin()*AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_MINLOT);}

如果(MM==false){MML=Lots;} }

// 专家启动头寸

int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;OP=0;for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) 。

if((OrderType()==OP_SELL||OrderType()==OP_BUY)&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0))OP=OP+1; }

if(OP>=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0;

//专家条件下的开仓

if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;}

// 平仓的专家条件

如果((SV>0)||(RealSL_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}.

if((BV>0)|(RealSL_Enabled&&(Ask-OrderOpenPrice())/Point>=RealSL)|(RealTP_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}.

for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);

如果(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)

{if(CB==1){OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Aqua);temp = Bid;return(0);}}.

如果(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)) {

if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Gold);temp = Bid;return(0);}}double SLI=0,TPI=0; int TK=0;

//专家开仓值

if((AddP()&&Add_Positions&&OP<=MaxOrders)|(OP==0&&! Add_Positions)){

if(OS==1){if(TP==0)TPI=0;否则TPI=Bid-TP*Point;if(SL==0)SLI=0;否则SLI=Bid+SL*Point;OS=0;return(0); }

if(OB==1){if(TP==0)TPI=0;else TPI=Ask+TP*Point;if(SL==0)SLI=0;else SLI=Ask-SL*Point;{TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip,SLI,TPI,OrSt,Magic,0,Blue); OB=0; return(0); } }

for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)){if(OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){TrP();}}返回(0); } }

// 专家的订单数

int CntO(int Type,int Magic){int _CntO;_CntO=0;

for(int j=0;j<OrdersTotal();j++){OrderSelect(j,SELECT_BY_POS,MODE_TRADES);if(OrderSymbol()==Symbol()){if(OrderType()==Type&&(OrderMagicNumber()==Magic)||Magic==0)}_CntO++; }}return(_CntO); }

//专家盈亏平衡

void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);if(OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol(),MODE_BID) 。

if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp);}}。

// 专家追踪止损

if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()<pb-(TS+TS_Step-1)*pp){ModSL(pb-TS*pp);返回;}}}}

如果(OrderType()==OP_SELL){pa=MarketInfo(OrderSymbol(),MODE_ASK);如果(BE>0){如果(OrderOpenPrice()-pa)>BE*pp){如果(OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}

if(TS>0){if(OrderOpenPrice()-pa>TS*pp){if(OrderStopLoss()>pa+(TS+TS_Step-1)*pp||OrderStopLoss()==0){ModSL(pa+TS*pp);返回;}}}}}

//专家止损

void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSL,OrderTakeProfit(),0,CLR_NONE); }

//专家添加头寸功能

bool AddP(){int _num=0; int _ot=0;

for (int j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS)==true &&OrderSymbol()==Symbol()&&OrderType()<3&&((OrderMagicNumber()==Magic)||Magic==0)) {

_num++;如果(OrderOpenTime()>_ot) _ot=OrderOpenTime();}if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);否则 return(false);}

 

/*

// 平仓的专家条件

if((SV>0)||(RealSL_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;} 。

if((BV>0)|(RealSL_Enabled&&(Ask-OrderOpenPrice())/Point>=RealSL)|(RealTP_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}.

for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt ,SELECT_BY_POS, MODE_TRADES);

如果(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&( (OrderMagicNumber()==Magic)||Magic==0))

{if(CB==1){OrderClose(OrderTicket(),OrderLots(),Bi d,Slip,Aqua); temp = Bid;return(0);}}

如果(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){

if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask ,Slip,Gold);temp = Bid;return(0);}}double SLI=0,TPI=0; int TK=0;

*/

只在专家条件的开始部分加入/*平仓的条件

和 */在结束时

msn aboukalil ( at) hotmail.fr

 

谢谢aboukalil的快速回答,但我不太明白,如果我把它编辑出来,我不是没有关闭命令吗,它会保留我现有的交易,但我的EA永远不会关闭它自己的交易,在相反的方向打开?

你能在这方面提供一点帮助吗?

 

大家好.....

很好奇是否有人知道或拥有一个通用指标,允许人们在通用指标的iCustoms中调用任何基于线的单一缓冲指标,以便当通用指标被连接到图表上时,它将显示为双色柱状图指标,其颜色变化是基于iCustomed indy的斜率?

感谢任何和所有的帮助。

 

女士们,先生们。

我怎样才能把一个指标变成csv文件?

 
biddick:
女士们,先生们,我怎样才能把一个指标变成csv文件?

你是指如何保存为CSV文件吗?

请看这个。

工具 - .csv阅读器

 
 

请帮助修改这个小脚本

你好。

谁能帮我修改一下这个小的订单输入脚本?

以便交易的手数是账户规模的风险%的函数

我知道这行代码应该插在某个地方,但我不知道如何编程

double Risk = RiskPercent / 100;

如果(UseMoneyMgmt)

Lots=NormalizeDouble(AccountBalance()*Risk/stoploss/(MarketInfo(Symbol(),MODE_TICKVALUE),2)。

非常感谢

附加的文件:
 

待定订单

嗨!

我如何管理挂单?(使用MT4 api)

当我的程序收到TT_ORDER_PENDING_OPEN(交易类型)

并在抽水通知中收到PUMP_UPDATE_ACTIVATION的通知