myeatrade

社区

EA运行一段时间后 包括测试 满足平仓条件也不平仓

carey carey 2012-08-08 10:55
EA跑一段时间后 刚开始的平仓都是按平仓条件执行,但运行一段时间后 单子达到平仓条件也不平不知道是为什么?


myeatrade myeatrade 2012-08-18 02:28
如果刚开始的平仓可以被有效执行,据我们测试目前还没有发现你这样的问题,我们将继续观察留意这个问题。

如果可以将你生成的代码发给我们,将有助于我们发现问题!
runweihu runweihu 2012-11-28 16:04
我也有这个问题,运行几单后就不平仓了。
runweihu runweihu 2012-11-28 16:10
//+------------------------------------------------------------------+
// Copyright , myEAtrade
// http://www.myEAtrade.com
// System Name: 测试1
// Automatically generated by the myEAtrade.com
// at Wednesday 28th of November 2012 07:33:32 AM
//+------------------------------------------------------------------+
#property copyright \"myEAtrade , www.myeatrade.com\"
#property link \"http://www.myeatrade.com/\"




///////////////////////////Model1////////////////////////////
extern string Model1_tip=\"多开\";
bool Model1_AutoTrade=1;
extern int Model1_CalculateModel=2;
extern int Model1_CalculateModelTimeframe=60;
extern double Model1_DefaultLots=1;
extern bool Model1_MoneyManagement=0;
extern double Model1_Risk=2;
extern int Model1_LotDigits=1;
extern double Model1_MinLots=0.1;
extern double Model1_MaxLots=1000;
extern int Model1_StopLoss=0;
extern int Model1_TakeProfit=0;
extern int Model1_BreakEven=0;
extern int Model1_TrailMode=0;
extern int Model1_TrailStart=50;
extern int Model1_TrailStop=20;
extern int Model1_MaxSpread=3;
extern int Model1_Slippage=10;
extern bool Model1_ECN=1;
extern bool Model1_MultiOrder=0;
extern int Model1_MaxOrder=5;
extern int Model1_MultiOrderTimeInterval=5;
extern bool Model1_InstantOrder=1;
extern bool Model1_StopOrder=0;
extern bool Model1_LimitOrder=0;
extern int Model1_PendingGap=20;
extern int Model1_PendingExpiration=720;
extern int Model1_HardCloseTime=0;
extern bool Model1_ReverseOrder=0;
string M5460_Symbol;double M5460_Point;int M5460_Mt;datetime Model1_lastOpenOrderTime;
extern string M1G1_tip=\"Condition Group1\";
extern string M1G1_FilterOpt12_tip=\"Filter Conditions\";
extern string M1G1_FilterOpt34_tip=\"Filter Conditions\";
extern string M1G1_Exe_tip=\"Execution Conditions\";
extern string M1G1_ExeCon1_tip=\"Execution Condition 1\";
string m1g1c1_Exec_Opt12_APara1=\"NULL\"; // Symbol
extern double m1g1c1_Exec_Opt12_APara2=60; // Timeframe
extern double m1g1c1_Exec_Opt12_APara3=0; // MA method
extern double m1g1c1_Exec_Opt12_APara4=20; // Period
extern double m1g1c1_Exec_Opt12_APara5=0; // Apply to
extern double m1g1c1_Exec_Opt12_APara6=0; // Shift
string m1g1c1_Exec_Opt12_BPara1=\"NULL\"; // Symbol
extern double m1g1c1_Exec_Opt12_BPara2=60; // Timeframe
extern double m1g1c1_Exec_Opt12_BPara3=0; // MA method
extern double m1g1c1_Exec_Opt12_BPara4=20; // Period
extern double m1g1c1_Exec_Opt12_BPara5=0; // Apply to
extern double m1g1c1_Exec_Opt12_BPara6=1; // Shift
extern string M1G1_ExeCon2_tip=\"Execution Condition 2\";
string m1g1c2_Exec_Opt12_APara1=\"NULL\"; // Symbol
extern double m1g1c2_Exec_Opt12_APara2=60; // Timeframe
extern double m1g1c2_Exec_Opt12_APara3=0; // MA method
extern double m1g1c2_Exec_Opt12_APara4=20; // Period
extern double m1g1c2_Exec_Opt12_APara5=0; // Apply to
extern double m1g1c2_Exec_Opt12_APara6=1; // Shift
string m1g1c2_Exec_Opt12_BPara1=\"NULL\"; // Symbol
extern double m1g1c2_Exec_Opt12_BPara2=60; // Timeframe
extern double m1g1c2_Exec_Opt12_BPara3=0; // MA method
extern double m1g1c2_Exec_Opt12_BPara4=20; // Period
extern double m1g1c2_Exec_Opt12_BPara5=0; // Apply to
extern double m1g1c2_Exec_Opt12_BPara6=2; // Shift

///////////////////////////Model2////////////////////////////
extern string Model2_tip=\"空开\";
bool Model2_AutoTrade=1;
extern int Model2_CalculateModel=2;
extern int Model2_CalculateModelTimeframe=60;
extern double Model2_DefaultLots=1;
extern bool Model2_MoneyManagement=0;
extern double Model2_Risk=2;
extern int Model2_LotDigits=1;
extern double Model2_MinLots=0.1;
extern double Model2_MaxLots=1000;
extern int Model2_StopLoss=0;
extern int Model2_TakeProfit=0;
extern int Model2_BreakEven=0;
extern int Model2_TrailMode=0;
extern int Model2_TrailStart=50;
extern int Model2_TrailStop=20;
extern int Model2_MaxSpread=3;
extern int Model2_Slippage=10;
extern bool Model2_ECN=1;
extern bool Model2_MultiOrder=0;
extern int Model2_MaxOrder=5;
extern int Model2_MultiOrderTimeInterval=5;
extern bool Model2_InstantOrder=1;
extern bool Model2_StopOrder=0;
extern bool Model2_LimitOrder=0;
extern int Model2_PendingGap=20;
extern int Model2_PendingExpiration=720;
extern int Model2_HardCloseTime=0;
extern bool Model2_ReverseOrder=0;
string M5505_Symbol;double M5505_Point;int M5505_Mt;datetime Model2_lastOpenOrderTime;
extern string M2G1_tip=\"Condition Group1\";
extern string M2G1_FilterOpt12_tip=\"Filter Conditions\";
extern string M2G1_FilterOpt34_tip=\"Filter Conditions\";
extern string M2G1_Exe_tip=\"Execution Conditions\";
extern string M2G1_ExeCon1_tip=\"Execution Condition 1\";
string m2g1c1_Exec_Opt12_APara1=\"NULL\"; // Symbol
extern double m2g1c1_Exec_Opt12_APara2=60; // Timeframe
extern double m2g1c1_Exec_Opt12_APara3=0; // MA method
extern double m2g1c1_Exec_Opt12_APara4=20; // Period
extern double m2g1c1_Exec_Opt12_APara5=0; // Apply to
extern double m2g1c1_Exec_Opt12_APara6=0; // Shift
string m2g1c1_Exec_Opt12_BPara1=\"NULL\"; // Symbol
extern double m2g1c1_Exec_Opt12_BPara2=60; // Timeframe
extern double m2g1c1_Exec_Opt12_BPara3=0; // MA method
extern double m2g1c1_Exec_Opt12_BPara4=20; // Period
extern double m2g1c1_Exec_Opt12_BPara5=0; // Apply to
extern double m2g1c1_Exec_Opt12_BPara6=1; // Shift
extern string M2G1_ExeCon2_tip=\"Execution Condition 2\";
string m2g1c2_Exec_Opt12_APara1=\"NULL\"; // Symbol
extern double m2g1c2_Exec_Opt12_APara2=60; // Timeframe
extern double m2g1c2_Exec_Opt12_APara3=0; // MA method
extern double m2g1c2_Exec_Opt12_APara4=20; // Period
extern double m2g1c2_Exec_Opt12_APara5=0; // Apply to
extern double m2g1c2_Exec_Opt12_APara6=1; // Shift
string m2g1c2_Exec_Opt12_BPara1=\"NULL\"; // Symbol
extern double m2g1c2_Exec_Opt12_BPara2=60; // Timeframe
extern double m2g1c2_Exec_Opt12_BPara3=0; // MA method
extern double m2g1c2_Exec_Opt12_BPara4=20; // Period
extern double m2g1c2_Exec_Opt12_BPara5=0; // Apply to
extern double m2g1c2_Exec_Opt12_BPara6=2; // Shift

///////////////////////////Model3////////////////////////////
extern string Model3_tip=\"多平\";
bool Model3_AutoTrade=1;
extern int Model3_CalculateModel=2;
extern int Model3_CalculateModelTimeframe=60;
extern double Model3_DefaultLots=1;
extern bool Model3_MoneyManagement=0;
extern double Model3_Risk=2;
extern int Model3_LotDigits=1;
extern double Model3_MinLots=0.1;
extern double Model3_MaxLots=1000;
extern int Model3_StopLoss=0;
extern int Model3_TakeProfit=0;
extern int Model3_BreakEven=0;
extern int Model3_TrailMode=0;
extern int Model3_TrailStart=50;
extern int Model3_TrailStop=20;
extern int Model3_MaxSpread=3;
extern int Model3_Slippage=10;
extern bool Model3_ECN=1;
extern bool Model3_MultiOrder=0;
extern int Model3_MaxOrder=5;
extern int Model3_MultiOrderTimeInterval=5;
extern bool Model3_InstantOrder=1;
extern bool Model3_StopOrder=0;
extern bool Model3_LimitOrder=0;
extern int Model3_PendingGap=20;
extern int Model3_PendingExpiration=720;
extern int Model3_HardCloseTime=0;
extern bool Model3_ReverseOrder=0;
string M5504_Symbol;double M5504_Point;int M5504_Mt;datetime Model3_lastOpenOrderTime;
extern string M3G1_tip=\"Condition Group1\";
extern string M3G1_FilterOpt12_tip=\"Filter Conditions\";
extern string M3G1_FilterOpt34_tip=\"Filter Conditions\";
extern string M3G1_Exe_tip=\"Execution Conditions\";
extern string M3G1_ExeCon1_tip=\"Execution Condition 1\";
string m3g1c1_Exec_Opt12_APara1=\"NULL\"; // Symbol
extern double m3g1c1_Exec_Opt12_APara2=60; // Timeframe
extern double m3g1c1_Exec_Opt12_APara3=0; // MA method
extern double m3g1c1_Exec_Opt12_APara4=20; // Period
extern double m3g1c1_Exec_Opt12_APara5=0; // Apply to
extern double m3g1c1_Exec_Opt12_APara6=0; // Shift
string m3g1c1_Exec_Opt12_BPara1=\"NULL\"; // Symbol
extern double m3g1c1_Exec_Opt12_BPara2=60; // Timeframe
extern double m3g1c1_Exec_Opt12_BPara3=0; // MA method
extern double m3g1c1_Exec_Opt12_BPara4=20; // Period
extern double m3g1c1_Exec_Opt12_BPara5=0; // Apply to
extern double m3g1c1_Exec_Opt12_BPara6=1; // Shift

///////////////////////////Model4////////////////////////////
extern string Model4_tip=\"空平\";
bool Model4_AutoTrade=1;
extern int Model4_CalculateModel=2;
extern int Model4_CalculateModelTimeframe=60;
extern double Model4_DefaultLots=1;
extern bool Model4_MoneyManagement=0;
extern double Model4_Risk=2;
extern int Model4_LotDigits=1;
extern double Model4_MinLots=0.1;
extern double Model4_MaxLots=1000;
extern int Model4_StopLoss=0;
extern int Model4_TakeProfit=0;
extern int Model4_BreakEven=0;
extern int Model4_TrailMode=0;
extern int Model4_TrailStart=50;
extern int Model4_TrailStop=20;
extern int Model4_MaxSpread=3;
extern int Model4_Slippage=10;
extern bool Model4_ECN=1;
extern bool Model4_MultiOrder=0;
extern int Model4_MaxOrder=5;
extern int Model4_MultiOrderTimeInterval=5;
extern bool Model4_InstantOrder=1;
extern bool Model4_StopOrder=0;
extern bool Model4_LimitOrder=0;
extern int Model4_PendingGap=20;
extern int Model4_PendingExpiration=720;
extern int Model4_HardCloseTime=0;
extern bool Model4_ReverseOrder=0;
string M5506_Symbol;double M5506_Point;int M5506_Mt;datetime Model4_lastOpenOrderTime;
extern string M4G1_tip=\"Condition Group1\";
extern string M4G1_FilterOpt12_tip=\"Filter Conditions\";
extern string M4G1_FilterOpt34_tip=\"Filter Conditions\";
extern string M4G1_Exe_tip=\"Execution Conditions\";
extern string M4G1_ExeCon1_tip=\"Execution Condition 1\";
string m4g1c1_Exec_Opt12_APara1=\"NULL\"; // Symbol
extern double m4g1c1_Exec_Opt12_APara2=60; // Timeframe
extern double m4g1c1_Exec_Opt12_APara3=0; // MA method
extern double m4g1c1_Exec_Opt12_APara4=20; // Period
extern double m4g1c1_Exec_Opt12_APara5=0; // Apply to
extern double m4g1c1_Exec_Opt12_APara6=0; // Shift
string m4g1c1_Exec_Opt12_BPara1=\"NULL\"; // Symbol
extern double m4g1c1_Exec_Opt12_BPara2=60; // Timeframe
extern double m4g1c1_Exec_Opt12_BPara3=0; // MA method
extern double m4g1c1_Exec_Opt12_BPara4=20; // Period
extern double m4g1c1_Exec_Opt12_BPara5=0; // Apply to
extern double m4g1c1_Exec_Opt12_BPara6=1; // Shift
double m1g1c1_Exec_Opt12_A_val[3];double m1g1c1_Exec_Opt12_B_val[3];double m1g1c2_Exec_Opt12_A_val[3];double m1g1c2_Exec_Opt12_B_val[3];double m2g1c1_Exec_Opt12_A_val[3];double m2g1c1_Exec_Opt12_B_val[3];double m2g1c2_Exec_Opt12_A_val[3];double m2g1c2_Exec_Opt12_B_val[3];double m3g1c1_Exec_Opt12_A_val[3];double m3g1c1_Exec_Opt12_B_val[3];double m4g1c1_Exec_Opt12_A_val[3];double m4g1c1_Exec_Opt12_B_val[3];
datetime lastBarTime[5];
int modelMagic[5];
bool canClose31=true;
bool closeOneTime31=1;
bool canClose41=true;
bool closeOneTime41=1;


int maxtry=10;
bool printLog=true;

int init(){
M5460_Symbol=Symbol(); double m1_point = MarketInfo(M5460_Symbol,MODE_POINT); int m1_digits = MarketInfo(M5460_Symbol,MODE_DIGITS); if(m1_digits==3 || m1_digits==5){
M5460_Point=m1_point*10;
M5460_Mt=10;
}else{
M5460_Point=m1_point;
M5460_Mt=1;
}
modelMagic[1]=5460;
M5505_Symbol=Symbol(); double m2_point = MarketInfo(M5505_Symbol,MODE_POINT); int m2_digits = MarketInfo(M5505_Symbol,MODE_DIGITS); if(m2_digits==3 || m2_digits==5){
M5505_Point=m2_point*10;
M5505_Mt=10;
}else{
M5505_Point=m2_point;
M5505_Mt=1;
}
modelMagic[2]=5505;
M5504_Symbol=Symbol(); double m3_point = MarketInfo(M5504_Symbol,MODE_POINT); int m3_digits = MarketInfo(M5504_Symbol,MODE_DIGITS); if(m3_digits==3 || m3_digits==5){
M5504_Point=m3_point*10;
M5504_Mt=10;
}else{
M5504_Point=m3_point;
M5504_Mt=1;
}
modelMagic[3]=5504;
M5506_Symbol=Symbol(); double m4_point = MarketInfo(M5506_Symbol,MODE_POINT); int m4_digits = MarketInfo(M5506_Symbol,MODE_DIGITS); if(m4_digits==3 || m4_digits==5){
M5506_Point=m4_point*10;
M5506_Mt=10;
}else{
M5506_Point=m4_point;
M5506_Mt=1;
}
modelMagic[4]=5506;
m1g1c1_Exec_Opt12_APara1=Symbol();m1g1c1_Exec_Opt12_BPara1=Symbol();m1g1c2_Exec_Opt12_APara1=Symbol();m1g1c2_Exec_Opt12_BPara1=Symbol();m2g1c1_Exec_Opt12_APara1=Symbol();m2g1c1_Exec_Opt12_BPara1=Symbol();m2g1c2_Exec_Opt12_APara1=Symbol();m2g1c2_Exec_Opt12_BPara1=Symbol();m3g1c1_Exec_Opt12_APara1=Symbol();m3g1c1_Exec_Opt12_BPara1=Symbol();m4g1c1_Exec_Opt12_APara1=Symbol();m4g1c1_Exec_Opt12_BPara1=Symbol();
}

int start(){
runModel1();runModel2();runModel3();runModel4();
return (0);
}


void runModel1(){
int totalPosition = countPositionByMagicSymbol(5460,M5460_Symbol,Model1_HardCloseTime);
if( Model1_MaxSpread>0 && (MarketInfo(M5460_Symbol,MODE_ASK)-MarketInfo(M5460_Symbol,MODE_BID))>Model1_MaxSpread*M5460_Point )return;
if((Model1_CalculateModel!=0)&&(!isNewBar(M5460_Symbol,Model1_CalculateModelTimeframe,1))) return;
bool canRunCheck=false;
if(!Model1_MultiOrder)Model1_MaxOrder=1;
if(totalPosition<Model1_MaxOrder)canRunCheck=true;
if(Model1_MaxOrder>1&&totalPosition>=1){
if(TimeCurrent()<(Model1_lastOpenOrderTime+Model1_MultiOrderTimeInterval*60))canRunCheck=false;
}
if(Model1_BreakEven>0&&totalPosition>0)breakEven(5460,M5460_Symbol,Model1_BreakEven,M5460_Point);
if(Model1_TrailMode>0&&Model1_TrailMode<=2&&totalPosition>0)trailStop(5460,M5460_Symbol,Model1_TrailMode,Model1_TrailStart,Model1_TrailStop,M5460_Point);
if(canRunCheck){
if(checkM1G1()){
int orderType=OP_BUY;if(Model1_ReverseOrder)orderType=OP_SELL;
if(Model1_AutoTrade){
double lots = getlots(Model1_DefaultLots,Model1_MoneyManagement,Model1_Risk,Model1_StopLoss,M5460_Symbol,M5460_Mt,Model1_LotDigits,Model1_MinLots,Model1_MaxLots);
int sl= Model1_StopLoss;
int tp = Model1_TakeProfit;
int ticket = openposition(
M5460_Symbol,
orderType,
lots,
sl,
tp,
5460,
Model1_ECN,
Model1_InstantOrder,
Model1_StopOrder,
Model1_LimitOrder,
Model1_PendingGap,
Model1_PendingExpiration,
M5460_Point,
M5460_Mt,
Model1_Slippage);
Model1_lastOpenOrderTime = getOrderOpenTime(ticket);}
}
}
}
void runModel2(){
int totalPosition = countPositionByMagicSymbol(5505,M5505_Symbol,Model2_HardCloseTime);
if( Model2_MaxSpread>0 && (MarketInfo(M5505_Symbol,MODE_ASK)-MarketInfo(M5505_Symbol,MODE_BID))>Model2_MaxSpread*M5505_Point )return;
if((Model2_CalculateModel!=0)&&(!isNewBar(M5505_Symbol,Model2_CalculateModelTimeframe,2))) return;
bool canRunCheck=false;
if(!Model2_MultiOrder)Model2_MaxOrder=1;
if(totalPosition<Model2_MaxOrder)canRunCheck=true;
if(Model2_MaxOrder>1&&totalPosition>=1){
if(TimeCurrent()<(Model2_lastOpenOrderTime+Model2_MultiOrderTimeInterval*60))canRunCheck=false;
}
if(Model2_BreakEven>0&&totalPosition>0)breakEven(5505,M5505_Symbol,Model2_BreakEven,M5505_Point);
if(Model2_TrailMode>0&&Model2_TrailMode<=2&&totalPosition>0)trailStop(5505,M5505_Symbol,Model2_TrailMode,Model2_TrailStart,Model2_TrailStop,M5505_Point);
if(canRunCheck){
if(checkM2G1()){
int orderType=OP_SELL;if(Model2_ReverseOrder)orderType=OP_BUY;
if(Model2_AutoTrade){
double lots = getlots(Model2_DefaultLots,Model2_MoneyManagement,Model2_Risk,Model2_StopLoss,M5505_Symbol,M5505_Mt,Model2_LotDigits,Model2_MinLots,Model2_MaxLots);
int sl= Model2_StopLoss;
int tp = Model2_TakeProfit;
int ticket = openposition(
M5505_Symbol,
orderType,
lots,
sl,
tp,
5505,
Model2_ECN,
Model2_InstantOrder,
Model2_StopOrder,
Model2_LimitOrder,
Model2_PendingGap,
Model2_PendingExpiration,
M5505_Point,
M5505_Mt,
Model2_Slippage);
Model2_lastOpenOrderTime = getOrderOpenTime(ticket);}
}
}
}
void runModel3(){
if((Model3_CalculateModel!=0)&&(!isNewBar(M5504_Symbol,Model3_CalculateModelTimeframe,3))) return;
bool canRunCheck=false;
if(checkHasPosition(5460,M5460_Symbol)){canRunCheck=true;}else{if(closeOneTime31)canClose31=true;}
bool spread31=true; if( Model3_MaxSpread>0 && (MarketInfo(M5460_Symbol,MODE_ASK)-MarketInfo(M5460_Symbol,MODE_BID))>Model3_MaxSpread*M5460_Point )spread31=false;
if(canRunCheck){
if(checkM3G1()){
bool allClose;
if(canClose31&&spread31){
allClose=closeModelPosition(5460,M5460_Symbol,1,0,M5504_Mt,Model3_Slippage); if(closeOneTime31&&allClose)canClose31=false;
}
}
}
}
void runModel4(){
if((Model4_CalculateModel!=0)&&(!isNewBar(M5506_Symbol,Model4_CalculateModelTimeframe,4))) return;
bool canRunCheck=false;
if(checkHasPosition(5505,M5505_Symbol)){canRunCheck=true;}else{if(closeOneTime41)canClose41=true;}
bool spread41=true; if( Model4_MaxSpread>0 && (MarketInfo(M5505_Symbol,MODE_ASK)-MarketInfo(M5505_Symbol,MODE_BID))>Model4_MaxSpread*M5505_Point )spread41=false;
if(canRunCheck){
if(checkM4G1()){
bool allClose;
if(canClose41&&spread41){
allClose=closeModelPosition(5505,M5505_Symbol,1,0,M5506_Mt,Model4_Slippage); if(closeOneTime41&&allClose)canClose41=false;
}
}
}
}
bool checkM1G1(){
int i;
bool reValue=false;
int preBar=0;
if(Model1_CalculateModel==2)preBar=1;

bool filter12=true;
bool filter34=true;
bool exec12_temp=true, exec12_a=false, exec12_b=true,exec12=false;
if(exec12_b){
exec12_temp=true;
int e12cBar111=2; if(preBar==1&&e12cBar111==1)e12cBar111=2;
for(i=preBar;i<=e12cBar111;i++){
m1g1c1_Exec_Opt12_A_val=iMA(m1g1c1_Exec_Opt12_APara1,
m1g1c1_Exec_Opt12_APara2,
m1g1c1_Exec_Opt12_APara4,
m1g1c1_Exec_Opt12_APara6,
m1g1c1_Exec_Opt12_APara3,
m1g1c1_Exec_Opt12_APara5,
i);
m1g1c1_Exec_Opt12_B_val=iMA(m1g1c1_Exec_Opt12_BPara1,
m1g1c1_Exec_Opt12_BPara2,
m1g1c1_Exec_Opt12_BPara4,
m1g1c1_Exec_Opt12_BPara6,
m1g1c1_Exec_Opt12_BPara3,
m1g1c1_Exec_Opt12_BPara5,
i);
}
if(!(m1g1c1_Exec_Opt12_A_val[preBar]>(m1g1c1_Exec_Opt12_B_val[preBar]+0))){exec12_temp=false;}
if(exec12_temp){
for(i=preBar+1;i<e12cBar111;i++){
if(!(m1g1c1_Exec_Opt12_A_val>m1g1c1_Exec_Opt12_B_val)){exec12_temp=false;}
}
}
if(!exec12_temp)exec12_b=false;
if(exec12_temp){
if(m1g1c1_Exec_Opt12_A_val[e12cBar111]>m1g1c1_Exec_Opt12_B_val[e12cBar111]){exec12_temp=false;}
}
if(exec12_temp)exec12_a=true;
}
if(exec12_b){
exec12_temp=true;
int e12cBar112=2; if(preBar==1&&e12cBar112==1)e12cBar112=2;
for(i=preBar;i<=e12cBar112;i++){
m1g1c2_Exec_Opt12_A_val=iMA(m1g1c2_Exec_Opt12_APara1,
m1g1c2_Exec_Opt12_APara2,
m1g1c2_Exec_Opt12_APara4,
m1g1c2_Exec_Opt12_APara6,
m1g1c2_Exec_Opt12_APara3,
m1g1c2_Exec_Opt12_APara5,
i);
m1g1c2_Exec_Opt12_B_val=iMA(m1g1c2_Exec_Opt12_BPara1,
m1g1c2_Exec_Opt12_BPara2,
m1g1c2_Exec_Opt12_BPara4,
m1g1c2_Exec_Opt12_BPara6,
m1g1c2_Exec_Opt12_BPara3,
m1g1c2_Exec_Opt12_BPara5,
i);
}
if(!(m1g1c2_Exec_Opt12_A_val[preBar]<(m1g1c2_Exec_Opt12_B_val[preBar]-0))){exec12_temp=false;}
if(exec12_temp){
for(i=preBar+1;i<e12cBar112;i++){
if(!(m1g1c2_Exec_Opt12_A_val<m1g1c2_Exec_Opt12_B_val)){exec12_temp=false;}
}
}
if(!exec12_temp)exec12_b=false;
if(exec12_temp){
if(m1g1c2_Exec_Opt12_A_val[e12cBar112]<m1g1c2_Exec_Opt12_B_val[e12cBar112]){exec12_temp=false;}
}
if(exec12_temp)exec12_a=true;
}
if(exec12_a&&exec12_b)exec12=true;
if(filter12&&filter34&&exec12)reValue=true;
return (reValue);
}
bool checkM2G1(){
int i;
bool reValue=false;
int preBar=0;
if(Model2_CalculateModel==2)preBar=1;

bool filter12=true;
bool filter34=true;
bool exec12_temp=true, exec12_a=false, exec12_b=true,exec12=false;
if(exec12_b){
exec12_temp=true;
int e12cBar211=2; if(preBar==1&&e12cBar211==1)e12cBar211=2;
for(i=preBar;i<=e12cBar211;i++){
m2g1c1_Exec_Opt12_A_val=iMA(m2g1c1_Exec_Opt12_APara1,
m2g1c1_Exec_Opt12_APara2,
m2g1c1_Exec_Opt12_APara4,
m2g1c1_Exec_Opt12_APara6,
m2g1c1_Exec_Opt12_APara3,
m2g1c1_Exec_Opt12_APara5,
i);
m2g1c1_Exec_Opt12_B_val=iMA(m2g1c1_Exec_Opt12_BPara1,
m2g1c1_Exec_Opt12_BPara2,
m2g1c1_Exec_Opt12_BPara4,
m2g1c1_Exec_Opt12_BPara6,
m2g1c1_Exec_Opt12_BPara3,
m2g1c1_Exec_Opt12_BPara5,
i);
}
if(!(m2g1c1_Exec_Opt12_A_val[preBar]<(m2g1c1_Exec_Opt12_B_val[preBar]-0))){exec12_temp=false;}
if(exec12_temp){
for(i=preBar+1;i<e12cBar211;i++){
if(!(m2g1c1_Exec_Opt12_A_val<m2g1c1_Exec_Opt12_B_val)){exec12_temp=false;}
}
}
if(!exec12_temp)exec12_b=false;
if(exec12_temp){
if(m2g1c1_Exec_Opt12_A_val[e12cBar211]<m2g1c1_Exec_Opt12_B_val[e12cBar211]){exec12_temp=false;}
}
if(exec12_temp)exec12_a=true;
}
if(exec12_b){
exec12_temp=true;
int e12cBar212=2; if(preBar==1&&e12cBar212==1)e12cBar212=2;
for(i=preBar;i<=e12cBar212;i++){
m2g1c2_Exec_Opt12_A_val=iMA(m2g1c2_Exec_Opt12_APara1,
m2g1c2_Exec_Opt12_APara2,
m2g1c2_Exec_Opt12_APara4,
m2g1c2_Exec_Opt12_APara6,
m2g1c2_Exec_Opt12_APara3,
m2g1c2_Exec_Opt12_APara5,
i);
m2g1c2_Exec_Opt12_B_val=iMA(m2g1c2_Exec_Opt12_BPara1,
m2g1c2_Exec_Opt12_BPara2,
m2g1c2_Exec_Opt12_BPara4,
m2g1c2_Exec_Opt12_BPara6,
m2g1c2_Exec_Opt12_BPara3,
m2g1c2_Exec_Opt12_BPara5,
i);
}
if(!(m2g1c2_Exec_Opt12_A_val[preBar]>(m2g1c2_Exec_Opt12_B_val[preBar]+0))){exec12_temp=false;}
if(exec12_temp){
for(i=preBar+1;i<e12cBar212;i++){
if(!(m2g1c2_Exec_Opt12_A_val>m2g1c2_Exec_Opt12_B_val)){exec12_temp=false;}
}
}
if(!exec12_temp)exec12_b=false;
if(exec12_temp){
if(m2g1c2_Exec_Opt12_A_val[e12cBar212]>m2g1c2_Exec_Opt12_B_val[e12cBar212]){exec12_temp=false;}
}
if(exec12_temp)exec12_a=true;
}
if(exec12_a&&exec12_b)exec12=true;
if(filter12&&filter34&&exec12)reValue=true;
return (reValue);
}
bool checkM3G1(){
int i;
bool reValue=false;
int preBar=0;
if(Model3_CalculateModel==2)preBar=1;

bool filter12=true;
bool filter34=true;
bool exec12_temp=true, exec12_a=false, exec12_b=true,exec12=false;
if(exec12_b){
exec12_temp=true;
int e12cBar311=2; if(preBar==1&&e12cBar311==1)e12cBar311=2;
for(i=preBar;i<=e12cBar311;i++){
m3g1c1_Exec_Opt12_A_val=iMA(m3g1c1_Exec_Opt12_APara1,
m3g1c1_Exec_Opt12_APara2,
m3g1c1_Exec_Opt12_APara4,
m3g1c1_Exec_Opt12_APara6,
m3g1c1_Exec_Opt12_APara3,
m3g1c1_Exec_Opt12_APara5,
i);
m3g1c1_Exec_Opt12_B_val=iMA(m3g1c1_Exec_Opt12_BPara1,
m3g1c1_Exec_Opt12_BPara2,
m3g1c1_Exec_Opt12_BPara4,
m3g1c1_Exec_Opt12_BPara6,
m3g1c1_Exec_Opt12_BPara3,
m3g1c1_Exec_Opt12_BPara5,
i);
}
if(!(m3g1c1_Exec_Opt12_A_val[preBar]<(m3g1c1_Exec_Opt12_B_val[preBar]-0))){exec12_temp=false;}
if(exec12_temp){
for(i=preBar+1;i<e12cBar311;i++){
if(!(m3g1c1_Exec_Opt12_A_val<m3g1c1_Exec_Opt12_B_val)){exec12_temp=false;}
}
}
if(!exec12_temp)exec12_b=false;
if(exec12_temp){
if(m3g1c1_Exec_Opt12_A_val[e12cBar311]<m3g1c1_Exec_Opt12_B_val[e12cBar311]){exec12_temp=false;}
}
if(exec12_temp)exec12_a=true;
}
if(exec12_a&&exec12_b)exec12=true;
if(filter12&&filter34&&exec12)reValue=true;
return (reValue);
}
bool checkM4G1(){
int i;
bool reValue=false;
int preBar=0;
if(Model4_CalculateModel==2)preBar=1;

bool filter12=true;
bool filter34=true;
bool exec12_temp=true, exec12_a=false, exec12_b=true,exec12=false;
if(exec12_b){
exec12_temp=true;
int e12cBar411=2; if(preBar==1&&e12cBar411==1)e12cBar411=2;
for(i=preBar;i<=e12cBar411;i++){
m4g1c1_Exec_Opt12_A_val=iMA(m4g1c1_Exec_Opt12_APara1,
m4g1c1_Exec_Opt12_APara2,
m4g1c1_Exec_Opt12_APara4,
m4g1c1_Exec_Opt12_APara6,
m4g1c1_Exec_Opt12_APara3,
m4g1c1_Exec_Opt12_APara5,
i);
m4g1c1_Exec_Opt12_B_val=iMA(m4g1c1_Exec_Opt12_BPara1,
m4g1c1_Exec_Opt12_BPara2,
m4g1c1_Exec_Opt12_BPara4,
m4g1c1_Exec_Opt12_BPara6,
m4g1c1_Exec_Opt12_BPara3,
m4g1c1_Exec_Opt12_BPara5,
i);
}
if(!(m4g1c1_Exec_Opt12_A_val[preBar]>(m4g1c1_Exec_Opt12_B_val[preBar]+0))){exec12_temp=false;}
if(exec12_temp){
for(i=preBar+1;i<e12cBar411;i++){
if(!(m4g1c1_Exec_Opt12_A_val>m4g1c1_Exec_Opt12_B_val)){exec12_temp=false;}
}
}
if(!exec12_temp)exec12_b=false;
if(exec12_temp){
if(m4g1c1_Exec_Opt12_A_val[e12cBar411]>m4g1c1_Exec_Opt12_B_val[e12cBar411]){exec12_temp=false;}
}
if(exec12_temp)exec12_a=true;
}
if(exec12_a&&exec12_b)exec12=true;
if(filter12&&filter34&&exec12)reValue=true;
return (reValue);
}


bool isNewBar(string s,int timeframe,int model){
datetime currentBarTime = iTime(s,timeframe,0);
if(lastBarTime[model]!=currentBarTime){
lastBarTime[model] = currentBarTime;
return (true);
}else{
return (false);
}
}


double getlots(double DefaultLots,bool MoneyManage,double Risk,double StopLoss,string symbol,int mt,int LotDigits,double MinLots,double MaxLots){
double lot;
if(MoneyManage){
if(StopLoss>0)lot=NormalizeDouble((AccountEquity()*(Risk/100))/(MarketInfo(symbol,MODE_TICKVALUE)*mt*StopLoss ),LotDigits);
else lot= NormalizeDouble(AccountEquity()/10000,LotDigits);
if(lot<MinLots)lot=MinLots;
if(lot>MaxLots)lot=MaxLots;
}else lot=DefaultLots;
return(lot);
}


int openposition(string symbol,int type,double lots,double StopLoss,double TakeProfit,int magic,bool ECN,bool InstantOrder,bool StopOrder,bool LimitOrder,int Gap,int Expiration,double point,int mt,int Slippage){
int ticket=0;int expire=0;int try=0;
if(StopOrder || LimitOrder)if(Expiration>0)expire=TimeCurrent()+(Expiration*60);
double ask=MarketInfo(symbol,MODE_ASK);double bid=MarketInfo(symbol,MODE_BID);
if(type==OP_BUY){//buy
if(ECN){
if(InstantOrder){
while(ticket<=0 && try<maxtry){
RefreshRates();
ticket=open(symbol,OP_BUY,lots,ask,0,0,magic,expire,point,mt,Slippage,Blue);
if(ticket<0){try++;if(printLog)Print(\"Error opening Instant BUY order!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
if(ticket>0){ecnsltpLong(ticket,StopLoss,TakeProfit,point);}
}
}
if(StopOrder){
RefreshRates();
ticket=open(symbol,OP_BUYSTOP,lots,ask+Gap*point,0,0,magic,expire,point,mt,Slippage,Blue);
if(ticket>0){ecnsltpLong(ticket,StopLoss,TakeProfit,point);}
}
if(LimitOrder){
RefreshRates();
ticket=open(symbol,OP_BUYLIMIT,lots,bid-Gap*point,0,0,magic,expire,point,mt,Slippage,Blue);
if(ticket>0){ecnsltpLong(ticket,StopLoss,TakeProfit,point);}
}
}else{
if(InstantOrder){
while(ticket<=0 && try<maxtry){
RefreshRates();
ticket=open(symbol,OP_BUY,lots,ask,StopLoss,TakeProfit,magic,expire,point,mt,Slippage,Blue);
if(ticket<0){try++;if(printLog)Print(\"Error opening Instant BUY order!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
}
}
if(StopOrder){RefreshRates();ticket=open(symbol,OP_BUYSTOP,lots,ask+Gap*point,StopLoss,TakeProfit,magic,expire,point,mt,Slippage,Blue);}
if(LimitOrder){RefreshRates();ticket=open(symbol,OP_BUYLIMIT,lots,bid-Gap*point,StopLoss,TakeProfit,magic,expire,point,mt,Slippage,Blue);}
}
}else if(type==OP_SELL){ // Sell
if(ECN){
if(InstantOrder){
while(ticket<=0 && try<maxtry){
RefreshRates();
ticket=open(symbol,OP_SELL,lots,bid,0,0,magic,expire,point,mt,Slippage,Red);
if(ticket<0){try++;if(printLog)Print(\"Error opening Instant SELL order!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
if(ticket>0){ecnsltpShort(ticket,StopLoss,TakeProfit,point);}
}
}
if(StopOrder){
RefreshRates();
ticket=open(symbol,OP_SELLSTOP,lots,bid-Gap*point,0,0,magic,expire,point,mt,Slippage,Red);
if(ticket>0){ecnsltpShort(ticket,StopLoss,TakeProfit,point);}
}
if(LimitOrder){
RefreshRates();
ticket=open(symbol,OP_SELLLIMIT,lots,ask+Gap*point,0,0,magic,expire,point,mt,Slippage,Red);
if(ticket>0){ecnsltpShort(ticket,StopLoss,TakeProfit,point);}
}
}else{
if(InstantOrder){
while(ticket<=0 && try<maxtry){
RefreshRates();
ticket=open(symbol,OP_SELL,lots,bid,StopLoss,TakeProfit,magic,expire,point,mt,Slippage,Red);
if(ticket<0){try++;if(printLog)Print(\"Error opening Instant SELL order!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
}
}
if(StopOrder){RefreshRates();ticket=open(symbol,OP_SELLSTOP,lots,bid-Gap*point,StopLoss,TakeProfit,magic,expire,point,mt,Slippage,Red);}
if(LimitOrder){RefreshRates();ticket=open(symbol,OP_SELLLIMIT,lots,ask+Gap*point,StopLoss,TakeProfit,magic,expire,point,mt,Slippage,Red);}
}
}

return (ticket);
}


int open(string symbol,int type,double lots,double price,double stoploss,double takeprofit,int magic, int expire,double point,int mt,int Slippage,color clr){
int ticket=0;
double sl,tp;
if(type==OP_BUY || type==OP_BUYSTOP || type==OP_BUYLIMIT){
if(stoploss>0){sl=price-stoploss*point;}else{sl=0;}
if(takeprofit>0){tp=price+takeprofit*point;}else{tp=0;}
}
if(type==OP_SELL || type==OP_SELLSTOP || type==OP_SELLLIMIT){
if(stoploss>0){sl=price+stoploss*point;}else{sl=0;}
if(takeprofit>0){tp=price-takeprofit*point;}else{tp=0;}
}
ticket=OrderSend(symbol,type,lots,NormalizeDouble(price,MarketInfo(symbol,MODE_DIGITS)),Slippage*mt,sl,tp,\"Prower by myeatrade.com\",magic,expire,clr);
return(ticket);
}

datetime getOrderOpenTime(int ticket){
OrderSelect(ticket,SELECT_BY_TICKET);
return (OrderOpenTime());
}



void ecnsltpLong(int ticket,double StopLoss,double TakeProfit,double point){
OrderSelect(ticket,SELECT_BY_TICKET);
bool succeed;int try;
succeed=false;try=0;
if(OrderStopLoss()==0&&StopLoss>0){
while(!succeed && try<maxtry){
RefreshRates();
succeed = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-StopLoss*point,MarketInfo(OrderSymbol(),MODE_DIGITS)),OrderTakeProfit(),0,Blue);
if(!succeed){try++;if(printLog)Print(\"Error modify long order stoploss!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
}
}
RefreshRates();
succeed=false;try=0;
OrderSelect(ticket,SELECT_BY_TICKET);
if(OrderTakeProfit()==0&&TakeProfit>0){
while(!succeed && try<maxtry){
RefreshRates();
succeed = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+TakeProfit*point,MarketInfo(OrderSymbol(),MODE_DIGITS)),0,Blue);
if(!succeed){try++;if(printLog)Print(\"Error modify long order takeprofit!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
}
}
}

void ecnsltpShort(int ticket,double StopLoss,double TakeProfit,double point){
OrderSelect(ticket,SELECT_BY_TICKET);
bool succeed;int try;
succeed=false;try=0;
if(OrderStopLoss()==0&&StopLoss>0){
while(!succeed && try<maxtry){
RefreshRates();
succeed = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+StopLoss*point,MarketInfo(OrderSymbol(),MODE_DIGITS)),OrderTakeProfit(),0,Blue);
if(!succeed){try++;if(printLog)Print(\"Error modify short order stoploss!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
}
}
RefreshRates();
succeed=false;try=0;
OrderSelect(ticket,SELECT_BY_TICKET);
if(OrderTakeProfit()==0&&TakeProfit>0){
while(!succeed && try<maxtry){
RefreshRates();
succeed = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-TakeProfit*point,MarketInfo(OrderSymbol(),MODE_DIGITS)),0,Blue);
if(!succeed){try++;if(printLog)Print(\"Error modify short order takeprofit!\",errordescription(GetLastError()),\" retry \"+try+\" times\");}
}
}
}


int countPositionByMagicSymbol(int magic,string symbol,int hardCloseTime){
int count=0;
if(OrdersTotal()>0){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==magic&&OrderSymbol()==symbol){
count++;
if(hardCloseTime>0&&(TimeCurrent()>OrderOpenTime()+hardCloseTime*60)){
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),MarketInfo(symbol,MODE_BID),0);
else if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),MarketInfo(symbol,MODE_ASK),0);
}
}
}
return(count);
}
}



void breakEven(int magic,string symbol,int BreakEven,double point){
RefreshRates();
if(OrdersTotal()>0){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL && OrderMagicNumber()==magic && OrderSymbol()==symbol){
if(OrderType()==OP_BUY){
if( NormalizeDouble((MarketInfo(symbol,MODE_BID)-OrderOpenPrice()),MarketInfo(symbol,MODE_DIGITS))>=NormalizeDouble(BreakEven*point,MarketInfo(symbol,MODE_DIGITS))){
if( (OrderStopLoss()-OrderOpenPrice())<0)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Blue);
}
}else{
if( NormalizeDouble((OrderOpenPrice()-MarketInfo(symbol,MODE_ASK)),MarketInfo(symbol,MODE_DIGITS))>=NormalizeDouble(BreakEven*point,MarketInfo(symbol,MODE_DIGITS))){
if(((OrderOpenPrice()-OrderStopLoss())<0)||(OrderStopLoss()==0))
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red);
}
}
}
}
}
}


void trailStop(int magic,string symbol,int TrailMode,int TrailStart,int TrailStop,double point){
RefreshRates();
if(OrdersTotal()>0){
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL && OrderMagicNumber()==magic && OrderSymbol()==symbol){
int digits=MarketInfo(symbol,MODE_DIGITS);
double ask = MarketInfo(symbol,MODE_ASK);double bid = MarketInfo(symbol,MODE_BID);
if(OrderType()==OP_BUY){
if( NormalizeDouble((bid-OrderOpenPrice()),digits)>=NormalizeDouble(TrailStart*point,digits)){
if(TrailMode==1){
if(NormalizeDouble(OrderStopLoss(),digits)<NormalizeDouble(bid-TrailStop*point,digits)){
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(bid-TrailStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
if(TrailMode==2){
if(bid-TrailStop*point >=OrderStopLoss()+TrailStop*point){
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(bid-TrailStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
}else{
if( NormalizeDouble((OrderOpenPrice()-ask),digits)>=NormalizeDouble(TrailStart*point,digits)){
if(TrailMode==1){
if( (NormalizeDouble(OrderStopLoss(),digits) > NormalizeDouble(ask+TrailStop*point,digits)) || OrderStopLoss()==0 ){
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(ask+TrailStop*point,digits),OrderTakeProfit(),0,Red);
}
}
if(TrailMode==2){
if((ask+TrailStop*point <=OrderStopLoss()-TrailStop*point) || OrderStopLoss()==0 ){
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(ask+TrailStop*point,digits),OrderTakeProfit(),0,Blue);
}
}
}
}
}
}
}
}












string errordescription(int code){
string error;
switch(code){
case 0:
case 1:error=\"no error\";break;
case 2:error=\"common error\";break;
case 3:error=\"invalid trade parameters\";break;
case 4:error=\"trade server is busy\";break;
case 5:error=\"old version of the client terminal\";break;
case 6:error=\"no connection with trade server\";break;
case 7:error=\"not enough rights\";break;
case 8:error=\"too frequent requests\";break;
case 9:error=\"malfunctional trade operation\";break;
case 64:error=\"account disabled\";break;
case 65:error=\"invalid account\";break;
case 128:error=\"trade timeout\";break;
case 129:error=\"invalid price\";break;
case 130:error=\"invalid stops\";break;
case 131:error=\"invalid trade volume\";break;
case 132:error=\"market is closed\";break;
case 133:error=\"trade is disabled\";break;
case 134:error=\"not enough money\";break;
case 135:error=\"price changed\";break;
case 136:error=\"off quotes\";break;
case 137:error=\"broker is busy\";break;
case 138:error=\"requote\";break;
case 139:error=\"order is locked\";break;
case 140:error=\"long positions only allowed\";break;
case 141:error=\"too many requests\";break;
case 145:error=\"modification denied because order too close to market\";break;
case 146:error=\"trade context is busy\";break;
case 4000:error=\"no error\";break;
case 4001:error=\"wrong function pointer\";break;
case 4002:error=\"array index is out of range\";break;
case 4003:error=\"no memory for function call stack\";break;
case 4004:error=\"recursive stack overflow\";break;
case 4005:error=\"not enough stack for parameter\";break;
case 4006:error=\"no memory for parameter string\";break;
case 4007:error=\"no memory for temp string\";break;
case 4008:error=\"not initialized string\";break;
case 4009:error=\"not initialized string in array\";break;
case 4010:error=\"no memory for array\\\' string\";break;
case 4011:error=\"too long string\";break;
case 4012:error=\"remainder from zero divide\";break;
case 4013:error=\"zero divide\";break;
case 4014:error=\"unknown command\";break;
case 4015:error=\"wrong jump (never generated error)\";break;
case 4016:error=\"not initialized array\";break;
case 4017:error=\"dll calls are not allowed\";break;
case 4018:error=\"cannot load library\";break;
case 4019:error=\"cannot call function\";break;
case 4020:error=\"expert function calls are not allowed\";break;
case 4021:error=\"not enough memory for temp string returned from function\";break;
case 4022:error=\"system is busy (never generated error)\";break;
case 4050:error=\"invalid function parameters count\";break;
case 4051:error=\"invalid function parameter value\";break;
case 4052:error=\"string function internal error\";break;
case 4053:error=\"some array error\";break;
case 4054:error=\"incorrect series array using\";break;
case 4055:error=\"custom indicator error\";break;
case 4056:error=\"arrays are incompatible\";break;
case 4057:error=\"global variables processing error\";break;
case 4058:error=\"global variable not found\";break;
case 4059:error=\"function is not allowed in testing mode\";break;
case 4060:error=\"function is not confirmed\";break;
case 4061:error=\"send mail error\";break;
case 4062:error=\"string parameter expected\";break;
case 4063:error=\"integer parameter expected\";break;
case 4064:error=\"double parameter expected\";break;
case 4065:error=\"array as parameter expected\";break;
case 4066:error=\"requested history data in update state\";break;
case 4099:error=\"end of file\";break;
case 4100:error=\"some file error\";break;
case 4101:error=\"wrong file name\";break;
case 4102:error=\"too many opened files\";break;
case 4103:error=\"cannot open file\";break;
case 4104:error=\"incompatible access to a file\";break;
case 4105:error=\"no order selected\";break;
case 4106:error=\"unknown symbol\";break;
case 4107:error=\"invalid price parameter for trade function\";break;
case 4108:error=\"invalid ticket\";break;
case 4109:error=\"trade is not allowed\";break;
case 4110:error=\"longs are not allowed\";break;
case 4111:error=\"shorts are not allowed\";break;
case 4200:error=\"object is already exist\";break;
case 4201:error=\"unknown object property\";break;
case 4202:error=\"object is not exist\";break;
case 4203:error=\"unknown object type\";break;
case 4204:error=\"no object name\";break;
case 4205:error=\"object coordinates error\";break;
case 4206:error=\"no specified subwindow\";break;
default:error=\"unknown error\";
}
return(error);
}


bool checkHasPosition(int magic,string symbol){
if(OrdersTotal()>0){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==magic&&OrderSymbol()==symbol) return(true);
}
}
return (false);
}

bool closeModelPosition(int magic,string symbol,double percent,int m,int mt,int Slippage){
double closeLots=0;
bool AllClose=true;
if(OrdersTotal()>0){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==magic&&OrderSymbol()==symbol){
if(TimeCurrent()-OrderOpenTime()<m*60){AllClose=false;continue;}
closeLots=OrderLots()*percent;
if(closeLots<MarketInfo(OrderSymbol(),MODE_MINLOT))closeLots=MarketInfo(OrderSymbol(),MODE_MINLOT);
if(OrderType()==OP_BUY){
RefreshRates();
if(!OrderClose(OrderTicket(),closeLots,MarketInfo(symbol,MODE_BID),Slippage*mt)){AllClose=false;}
}
if(OrderType()==OP_SELL){
RefreshRates();
if(!OrderClose(OrderTicket(),closeLots,MarketInfo(symbol,MODE_ASK),Slippage*mt)){AllClose=false;}
}
if(OrderType()==OP_BUYLIMIT||OrderType()==OP_BUYSTOP||OrderType()==OP_SELLLIMIT||OrderType()==OP_SELLSTOP){
RefreshRates();
if(!OrderDelete(OrderTicket())){AllClose=false;}
}
}
}
}
return (AllClose);
}



myeatrade myeatrade 2012-11-28 21:32
一般这样的原因就是后面没有满足你需要的平仓的条件,我们确保只要设置的逻辑正确,生成的代码一定能按设置的逻辑进行运行,请仔细观察检查,设置的相关条件;

请将代码用附件形式上传,上面的代码,我们复制后无法进行编译

runweihu runweihu 2012-11-29 09:30
附件
附件: 1h.mq4
Page 1 of 1 1

请登录后发表回复,如果你还没有账户你可以 免费注册

回到 意见 & 反馈
menu image pre-loadermenu image pre-loadermenu image pre-loadermenu image pre-loadermenu image pre-loadermenu image pre-loadermenu image pre-loader