KARAUL!!!帮助。还有4小时45分钟!!!。

 

谁能帮帮我。我不知道错误在哪里。

代码。

//+------------------------------------------------------------------+
//| Cempionat2012.mq5 | |
//| 冯-帕夫利乌克 | 冯-帕夫利乌克
//| |
//+------------------------------------------------------------------+
#财产版权"Victor Pavljuk"
#财产版本 "1.03"

输入int TakeProfit=538。
输入int StopLoss=1000。
输入int TradeTime=13。
输入int t1=7。
输入int t2=1。
输入int delta=70。
输入double lot=5。

bool cantrade=true。
双问。
双倍出价。
int OpenLong(double volume=5,
int slippage=10000。
string comment=""。
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;

my_trade.action=TRADE_ACTION_DEAL。
my_trade.symbol=Symbol()。
my_trade.volume=NormalizeDouble(volume,1)。
my_trade.price=NormalizeDouble(Ask,_Digits)。
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits)。
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits)。
my_trade.deviation=slippage。
my_trade.type=ORDER_TYPE_BUY。
my_trade.type_filling=ORDER_FILLING_RETURN。
my_trade.comment=评论。
my_trade.magic=magic。

ResetLastError()。

如果(OrderSend(my_trade,my_trade_result))
{
Print("交易结果代码 - ",my_trade_result.retcode)
}
否则
{
Print("操作结果代码 - ",my_trade_result.retcode)。
Print("Order open error = " ,GetLastError())。
}
return(0);
}
int OpenShort(double volume=5,
int slippage=10000。
string comment=""。
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;

my_trade.action=TRADE_ACTION_DEAL。
my_trade.symbol=Symbol()。
my_trade.volume=NormalizeDouble(volume,1)。
my_trade.price=NormalizeDouble(Ask,_Digits)。
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits)。
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits)。
my_trade.deviation=slippage。
my_trade.type=ORDER_TYPE_SELL。
my_trade.type_filling=ORDER_FILLING_RETURN。
my_trade.comment=评论。
my_trade.magic=magic。

ResetLastError()。

如果(OrderSend(my_trade,my_trade_result))
{
Print("交易结果代码 - ",my_trade_result.retcode)
}
否则
{
Print("操作结果代码 - ",my_trade_result.retcode)。
Print("Order open error = " ,GetLastError())。
}
return(0);
}
int OnInit()
{
return(0);
}
空白OnDeinit(const int reason){}。
空白的OnTick()
{
double Open[]。
MqlDateTime mqldt;
TimeCurrent(mqldt)。
int len;
MqlTick last_tick;
SymbolInfoTick(_Symbol,last_tick)。
Ask=last_tick.ask。
Bid=last_tick.bid。

ArraySetAsSeries(Open,true)。

如果(t1>=t2)len=t1+1。
否则len=t2+1。

CopyOpen(_Symbol,PERIOD_M30,0,len,Open)。

如果(((mqldt.hour)>TradeTime))

if(!PositionSelect(_Symbol))//如果还没有开仓的话
{
如果((mqldt.hour==TradeTime) && (cantrade))
{
如果(Open[t1]>(Open[t2]+delta*_Point))
{
OpenShort(lot,10,",888)。
cantrade=false。
返回。

}

如果((Open[t1]+delta*_Point)<Open[t2])
{
OpenLong(lot,10,"",888);
{ return; }((Open[t1]+delta*_Point)=false;
返回。
}

}
}
返回。
}
//+------------------------------------------------------------------+

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
附加的文件:
 

在使用MqlTradeRequest结构 之前,应先清空该结构

阅读更多

 
GGG,我想知道有多少人的脑子里有一句话与这个主题产生了共鸣。:)
 
//+------------------------------------------------------------------+
//| Cempionat2012.mq5 |
//| Victor Pavlyuk |
//| |
//+------------------------------------------------------------------+
#property copyright "Victor Pavljuk"
#property version "1.03"

input int TakeProfit=538;
input int StopLoss=1000;
input int TradeTime=13;
input int t1=7;
input int t2=1;
input int delta=70;
input double lot=5;

bool cantrade=true; 
double Ask; 
double Bid; 
int OpenLong(double volume=5,
int slippage=10000,
string comment="",
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;

my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol();
my_trade.volume=NormalizeDouble(volume,1);
my_trade.price=NormalizeDouble(Ask,_Digits);
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
my_trade.deviation=slippage;
my_trade.type=ORDER_TYPE_BUY;
my_trade.type_filling=ORDER_FILLING_RETURN;
my_trade.comment=comment;
my_trade.magic=magic;

ResetLastError();

if(OrderSend(my_trade,my_trade_result))
{
Print("Код результата операции - ",my_trade_result.retcode);
}
else
{
Print("Код результата операции - ",my_trade_result.retcode);
Print("Ошибка открытия ордера = ",GetLastError());
}
return(0);
}
int OpenShort(double volume=5,
int slippage=10000,
string comment="",
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;

my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol();
my_trade.volume=NormalizeDouble(volume,1);
my_trade.price=NormalizeDouble(Ask,_Digits);
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
my_trade.deviation=slippage;
my_trade.type=ORDER_TYPE_SELL;
my_trade.type_filling=ORDER_FILLING_RETURN;
my_trade.comment=comment;
my_trade.magic=magic;

ResetLastError();

if(OrderSend(my_trade,my_trade_result))
{
Print("Код результата операции - ",my_trade_result.retcode);
}
else
{
Print("Код результата операции - ",my_trade_result.retcode);
Print("Ошибка открытия ордера = ",GetLastError());
}
return(0);
}
int OnInit()
{
return(0);
}
void OnDeinit(const int reason){}
void OnTick()
{
double Open[];
MqlDateTime mqldt;
TimeCurrent(mqldt);
int len;
MqlTick last_tick;
SymbolInfoTick(_Symbol,last_tick);
Ask=last_tick.ask;
Bid=last_tick.bid;

ArraySetAsSeries(Open,true);

if(t1>=t2)len=t1+1;
else len=t2+1;

CopyOpen(_Symbol,PERIOD_M30,0,len,Open);

if(((mqldt.hour)>TradeTime)) cantrade=true;

if(!PositionSelect(_Symbol))// Если еще нет открытой позиции
{
if((mqldt.hour==TradeTime) && (cantrade))
{
if(Open[t1]>(Open[t2]+delta*_Point))
{
OpenShort(lot,10,"",888);
cantrade=false;
return;

}

if((Open[t1]+delta*_Point)<Open[t2])
{
OpenLong(lot,10,"",888);
cantrade=false;
return;
}

}
}
return;
}
//+------------------------------------------------------------------+
首先,要明确的是
 

我想这是问为什么TP和SL等于Asku 的代码。

只是有一个不同的作者。

IMHO。

 

可以把结构从函数中拿出来。

或者说滑移太大,为什么这样说呢?

为什么会有一对额外的支架呢?

如果(((mqldt.hour)>TradeTime))

 

有可能按类型重写开口函数。

void PosOpen(int trade, string symbol)
  {if (trade==0)
   return;
   
   double Price;
   ENUM_ORDER_TYPE Type;
   
   if (trade==1)
    {Type= ORDER_TYPE_BUY;
     Price=SymbolInfoDouble(symbol,SYMBOL_ASK);}
   else 
    {Type = ORDER_TYPE_SELL;
     Price=SymbolInfoDouble(symbol,SYMBOL_BID);}
     
   mytrade.PositionOpen(symbol,Type,Lot,Price,0,0,"Open");    
 return;
 }    
 
Heroix:

有可能按类型重写开口函数。

那么至少要说明这些函数来自哪个库。

 

在测试过程中,我看到日志中的信息。

2012.09.21 20:07:11 核心 1 2012.09.18 13:00:00 未能即时卖出 5.00 EURUSD at 1.30657 sl: 1.29657 tp: 1.31195 [无效的请求] 。

 
pavivas:

在测试过程中,我看到日志中的信息。

2012.09.21 20:07:11 核心 1 2012.09.18 13:00:00 未能即时卖出 5.00 EURUSD at 1.30657 sl: 1.29657 tp: 1.31195 [无效的请求] 。

这是你应该开始的地方。
 
Vladon:

那么至少要说明这些函数来自哪个库。

#include <Trade\Trade.mqh>。

顺便说一下,它默认是在终端文件夹 中,不是吗?它不应该附在胖子的EA上?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5