PDA

View Full Version : 帮助调试我的EA我觉得解决方案太简单了。



阿拉诗阿格斯蒂娜
09-18-2007 05:45, 05:45 AM
以下是我的EA代码的副本。每当我将它附加到图表时,它只是坐在那里,不会打开或关闭任何交易。它设置为实时交易,无需人工确认。

有什么想法吗?








#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property版权所有
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 5.0;
extern int Slippage = 0;
extern bool StopLossMode = False;
extern int StopLoss = 0;
extern bool TakeProfitMode = False;
extern int TakeProfit = 0;
extern bool TrailingStopMode = False;
extern int TrailingStop = 0;
int BarCount;
当前;
bool TickCheck =假;
// ----------------------------------------------- -------------------
//|专家初始化函数|
// ----------------------------------------------- -------------------
int init(){
BarCount =酒吧;
if(EachTickMode)Current = 0; else Current = 1;
返回(0);
}
// ----------------------------------------------- -------------------
//|专家取消初始化功能|
// ----------------------------------------------- -------------------
int deinit(){
返回(0);
}
// ----------------------------------------------- -------------------
//|专家启动功能|
// ----------------------------------------------- -------------------
int start(){
int Order = SIGNAL_NONE;
int Total,Ticket;
double StopLossLevel,TakeProfitLevel;

if(EachTickMode Bars!= BarCount)TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
// ----------------------------------------------- -------------------
//|变量开始|
// ----------------------------------------------- -------------------
double Var1 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_SIGNAL,Current 0);
double Var2 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_MAIN,Current 0);
double Var3 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_SIGNAL,Current 1);
double Var4 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_MAIN,Current 1);
double Buy1_1 = Var1 lt; Var2;
double Buy2_1 = Var3 gt; Var4;
double Sell1_1 = Var1 gt; VAR2;
double Sell2_1 = Var3 lt; Var4;
double CloseBuy1_1 = Var1 gt; VAR2;
double CloseBuy2_1 = Var3 lt; Var4;
double CloseSell1_1 = Var1 lt; Var2;
double CloseSell2_1 = Var3 gt; Var4;

// ----------------------------------------------- -------------------
//|变量结束|
// ----------------------------------------------- -------------------
//检查位置
bool IsTrade = False;
for(int i = 0; i lt; Total; i ){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()lt; = OP_SELL OrderSymbol()== Symbol()){
IsTrade = True;
if(OrderType()== OP_BUY){
//关
// ----------------------------------------------- -------------------
//|信号开始(退出购买)|
// ----------------------------------------------- -------------------
if(False False)Order = SIGNAL_CLOSEBUY;

// ----------------------------------------------- -------------------
//|信号结束(退出购买)|
// ----------------------------------------------- -------------------
if(Order == SIGNAL_CLOSEBUY((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,MediumSeaGreen);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Bid,Digits) Close Buy);
if(!EachTickMode)BarCount = Bars;
IsTrade = False;
继续;
}
//追踪止损
if(TrailingStopMode TrailingStop gt; 0){
if(Bid - OrderOpenPrice()gt; Point * TrailingStop){
if(OrderStopLoss()lt; Bid - Point * TrailingStop){
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point * TrailingStop,OrderTakeProfit(),0,MediumSeaGreen);
if(!EachTickMode)BarCount = Bars;
继续;
}
}
}
} else {
//关
// ----------------------------------------------- -------------------
//|信号开始(退出卖出)|
// ----------------------------------------------- -------------------
if(False False)Order = SIGNAL_CLOSESELL;

// ----------------------------------------------- -------------------
//|信号结束(退出卖出)|
// ----------------------------------------------- -------------------
if(Order == SIGNAL_CLOSESELL((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,DarkOrange);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Ask,Digits) Close Sell);
if(!EachTickMode)BarCount = Bars;
IsTrade = False;
继续;
}
//追踪止损
if(TrailingStopMode TrailingStop gt; 0){
if((OrderOpenPrice() - Ask)gt;(Point * TrailingStop)){
if((OrderStopLoss()gt;(Ask Point * TrailingStop))||(OrderStopLoss()== 0)){
OrderModify(OrderTicket(),OrderOpenPrice(),Ask Point * TrailingStop,OrderTakeProfit(),0,DarkOrange);
if(!EachTickMode)BarCount = Bars;
继续;
}
}
}
}
}
}
// ----------------------------------------------- -------------------
//|信号开始(输入)|
// ----------------------------------------------- -------------------
if(False False)Order = SIGNAL_BUY;
if(False False)Order = SIGNAL_SELL;

// ----------------------------------------------- -------------------
//|信号结束|
// ----------------------------------------------- -------------------
//购买
if(Order == SIGNAL_BUY((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
if(!IsTrade){
//检查可用保证金
if(AccountFreeMargin()lt;(1)){
打印(我们没有钱。免费保证金=,AccountFreeMargin());
返回(0);
}
if(StopLossMode)StopLossLevel = Ask - StopLoss * Point;否则StopLossLevel = 0.0;
if(TakeProfitMode)TakeProfitLevel = Ask TakeProfit * Point;否则TakeProfitLevel = 0.0;
Ticket = OrderSend(符号(),OP_BUY,Lots,Ask,Slippage,StopLossLevel,TakeProfitLevel,Buy(# MagicNumber ),MagicNumber,0,DodgerBlue);
if(Ticket gt; 0){
if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){
打印(买入订单已打开:,OrderOpenPrice());
SetIndexStyle(3,DRAW_ARROW,EMPTY,2,绿色);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Ask,Digits) Open Buy);
} else {
打印(错误打开购买订单:,GetLastError());
}
}
if(EachTickMode)TickCheck = True;
if(!EachTickMode)BarCount = Bars;
返回(0);
}
}
//卖
if(Order == SIGNAL_SELL((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
if(!IsTrade){
//检查可用保证金
if(AccountFreeMargin()lt;(1)){
打印(我们没有钱。免费保证金=,AccountFreeMargin());
返回(0);
}
if(StopLossMode)StopLossLevel = Bid StopLoss * Point;否则StopLossLevel = 0.0;
if(TakeProfitMode)TakeProfitLevel = Bid - TakeProfit * Point;否则TakeProfitLevel = 0.0;
Ticket = OrderSend(符号(),OP_SELL,Lots,Bid,Slippage,StopLossLevel,TakeProfitLevel,Sell(# MagicNumber ),MagicNumber,0,DeepPink);
if(Ticket gt; 0){
if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){
打印(卖出订单:,OrderOpenPrice());
SetIndexStyle(3,DRAW_ARROW,EMPTY,2,Red);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Bid,Digits) Open Sell);
} else {
打印(错误打开卖单:,GetLastError());
}
}
if(EachTickMode)TickCheck = True;
if(!EachTickMode)BarCount = Bars;
返回(0);
}
}
if(!EachTickMode)BarCount = Bars;
返回(0);
}
// ----------------------------------------------- -------------------


#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property版权所有
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 5.0;
extern int Slippage = 0;
extern bool StopLossMode = False;
extern int StopLoss = 0;
extern bool TakeProfitMode = False;
extern int TakeProfit = 0;
extern bool TrailingStopMode = False;
extern int TrailingStop = 0;
int BarCount;
当前;
bool TickCheck =假;
// ----------------------------------------------- -------------------
//|专家初始化函数|
// ----------------------------------------------- -------------------
int init(){
BarCount =酒吧;
if(EachTickMode)Current = 0; else Current = 1;
返回(0);
}
// ----------------------------------------------- -------------------
//|专家取消初始化功能|
// ----------------------------------------------- -------------------
int deinit(){
返回(0);
}
// ----------------------------------------------- -------------------
//|专家启动功能|
// ----------------------------------------------- -------------------
int start(){
int Order = SIGNAL_NONE;
int Total,Ticket;
double StopLossLevel,TakeProfitLevel;

if(EachTickMode Bars!= BarCount)TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
// ----------------------------------------------- -------------------
//|变量开始|
// ----------------------------------------------- -------------------
double Var1 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_SIGNAL,Current 0);
double Var2 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_MAIN,Current 0);
double Var3 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_SIGNAL,Current 1);
double Var4 = iMACD(NULL,0,8,17,9,PRICE_CLOSE,MODE_MAIN,Current 1);
double Buy1_1 = Var1 lt; Var2;
double Buy2_1 = Var3 gt; Var4;
double Sell1_1 = Var1 gt; VAR2;
double Sell2_1 = Var3 lt; Var4;
double CloseBuy1_1 = Var1 gt; VAR2;
double CloseBuy2_1 = Var3 lt; Var4;
double CloseSell1_1 = Var1 lt; Var2;
double CloseSell2_1 = Var3 gt; Var4;

// ----------------------------------------------- -------------------
//|变量结束|
// ----------------------------------------------- -------------------
//检查位置
bool IsTrade = False;
for(int i = 0; i lt; Total; i ){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()lt; = OP_SELL OrderSymbol()== Symbol()){
IsTrade = True;
if(OrderType()== OP_BUY){
//关
// ----------------------------------------------- -------------------
//|信号开始(退出购买)|
// ----------------------------------------------- -------------------
if(False False)Order = SIGNAL_CLOSEBUY;

// ----------------------------------------------- -------------------
//|信号结束(退出购买)|
// ----------------------------------------------- -------------------
if(Order == SIGNAL_CLOSEBUY((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,MediumSeaGreen);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Bid,Digits) Close Buy);
if(!EachTickMode)BarCount = Bars;
IsTrade = False;
继续;
}
//追踪止损
if(TrailingStopMode TrailingStop gt; 0){
if(Bid - OrderOpenPrice()gt; Point * TrailingStop){
if(OrderStopLoss()lt; Bid - Point * TrailingStop){
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point * TrailingStop,OrderTakeProfit(),0,MediumSeaGreen);
if(!EachTickMode)BarCount = Bars;
继续;
}
}
}
} else {
//关
// ----------------------------------------------- -------------------
//|信号开始(退出卖出)|
// ----------------------------------------------- -------------------
if(False False)Order = SIGNAL_CLOSESELL;

// ----------------------------------------------- -------------------
//|信号结束(退出卖出)|
// ----------------------------------------------- -------------------
if(Order == SIGNAL_CLOSESELL((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,DarkOrange);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Ask,Digits) Close Sell);
if(!EachTickMode)BarCount = Bars;
IsTrade = False;
继续;
}
//追踪止损
if(TrailingStopMode TrailingStop gt; 0){
if((OrderOpenPrice() - Ask)gt;(Point * TrailingStop)){
if((OrderStopLoss()gt;(Ask Point * TrailingStop))||(OrderStopLoss()== 0)){
OrderModify(OrderTicket(),OrderOpenPrice(),Ask Point * TrailingStop,OrderTakeProfit(),0,DarkOrange);
if(!EachTickMode)BarCount = Bars;
继续;
}
}
}
}
}
}
// ----------------------------------------------- -------------------
//|信号开始(输入)|
// ----------------------------------------------- -------------------
if(False False)Order = SIGNAL_BUY;
if(False False)Order = SIGNAL_SELL;

// ----------------------------------------------- -------------------
//|信号结束|
// ----------------------------------------------- -------------------
//购买
if(Order == SIGNAL_BUY((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
if(!IsTrade){
//检查可用保证金
if(AccountFreeMargin()lt;(1)){
打印(我们没有钱。免费保证金=,AccountFreeMargin());
返回(0);
}
if(StopLossMode)StopLossLevel = Ask - StopLoss * Point;否则StopLossLevel = 0.0;
if(TakeProfitMode)TakeProfitLevel = Ask TakeProfit * Point;否则TakeProfitLevel = 0.0;
Ticket = OrderSend(符号(),OP_BUY,Lots,Ask,Slippage,StopLossLevel,TakeProfitLevel,Buy(# MagicNumber ),MagicNumber,0,DodgerBlue);
if(Ticket gt; 0){
if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){
打印(买入订单已打开:,OrderOpenPrice());
SetIndexStyle(3,DRAW_ARROW,EMPTY,2,绿色);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Ask,Digits) Open Buy);
} else {
打印(错误打开购买订单:,GetLastError());
}
}
if(EachTickMode)TickCheck = True;
if(!EachTickMode)BarCount = Bars;
返回(0);
}
}
//卖
if(Order == SIGNAL_SELL((EachTickMode!TickCheck)||(!EachTickMode(Bars!= BarCount)))){
if(!IsTrade){
//检查可用保证金
if(AccountFreeMargin()lt;(1)){
打印(我们没有钱。免费保证金=,AccountFreeMargin());
返回(0);
}
if(StopLossMode)StopLossLevel = Bid StopLoss * Point;否则StopLossLevel = 0.0;
if(TakeProfitMode)TakeProfitLevel = Bid - TakeProfit * Point;否则TakeProfitLevel = 0.0;
Ticket = OrderSend(符号(),OP_SELL,Lots,Bid,Slippage,StopLossLevel,TakeProfitLevel,Sell(# MagicNumber ),MagicNumber,0,DeepPink);
if(Ticket gt; 0){
if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){
打印(卖出订单:,OrderOpenPrice());
SetIndexStyle(3,DRAW_ARROW,EMPTY,2,Red);
if(SignalMail)SendMail([Signal Alert],[ Symbol() ] DoubleToStr(Bid,Digits) Open Sell);
} else {
打印(错误打开卖单:,GetLastError());
}
}
if(EachTickMode)TickCheck = True;
if(!EachTickMode)BarCount = Bars;
返回(0);
}
}
if(!EachTickMode)BarCount = Bars;
返回(0);
}
// ----------------------------------------------- -------------------

Lowyins
08-17-2023 01:28, 01:28 AM
你想用if(False False)条款说什么?我还没有见过以前用过的东西。