Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
需要黄线
现在告诉我如何在这里获利......或者是建立一个游戏?
大家好,能不能帮我找到EA代码中的一个错误,我想我已经看完了,代码中似乎都写得很正确,但是程序不知道为什么不能正常交易!我想知道为什么?这个想法是这样的:顾问必须寻找两个相同方向的长蜡烛(蜡烛之间的长度在顾问中可以调整,即在两个最低或最高蜡烛之间,取决于方向),如果相反方向的价格突破了最后一根蜡烛的最低或最高值,交易应该打开(文件所附图表中的示例图片情况)。顾问应该在每个合适的情况下打开交易,但由于某些原因,它只在几天之间的交易窗口打开交易。情况是这样的,谁也不难从程序员的角度出发,请帮助,修复错误。EA代码见下文以及附件文件。
大家好,能不能帮我找到EA代码中的一个错误,我想我已经全部看完了,代码中似乎写得很正确,但程序不知道为什么不能正常交易!我想知道为什么?这个想法是这样的:顾问必须寻找两个相同方向的长蜡烛(蜡烛之间的长度在顾问中可以调整,即在两个最低或最高蜡烛之间,取决于方向),如果相反方向的价格突破了最后一根蜡烛的最低或最高值,交易应该打开(文件所附图表中的示例图片情况)。顾问应该在每个合适的情况下打开交易,但由于某些原因,它只在几天之间的交易窗口打开交易。情况是这样的,谁也不难从程序员的角度出发,请帮助,修复错误。请看下面的EA代码以及附件中的文件。
最好先写出EA的部分内容,将发现的蜡烛标记在图表上,这样一切都会变得清晰。而下面这几行在你的情况下是不必要的。
现在告诉我如何在这里获利......或者你需要它来建立一个游戏?
目前还没有办法获得利润。有一种算法用于计算两个可能的价格目标,沿着趋势,由五个主要点,但它是在一个特殊的服务器上计算的,需要付费订阅。我想自己计算目标,关于算法的工作还没有结束。
你的程序在MQL4中会是什么样子?
如果你有好的策略并愿意分享,我可以写一个EA。我邀请你公开或在私人信息中讨论它。
安东,帮帮我吧,我在EA中加入了追踪止损功能,我已经编译了,但它显示了两个错误。- 我的头被撞破了,我想不出如何修复它们以获得猫头鹰。然而交易在价格分别触及通道的上限和下限后,根据旧的策略被关闭。我想这里也必须要改变一些东西。- 回电给dnr军队的人。
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#属性链接 "https://www.mql5.com"
#财产版本 "1.00"
#属性严格
//---------------------------------------------------------
外来的双倍Lots = 0.01。
外置 int TakeProfit = 600;
外来的int StopLoss = 25;
外来的int Magic = 0001;
外置 int Slippage = 3;
extern int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.
外部双SAR_Step = 0.02。
外置双SAR_Max = 0.2。
外置 int ATR_Period = 14;
外置双倍ATR_K = 2.0。
外来的HMA_Period = 16。
外部实习生HMA_Method = 3;
外部inttern HMA_Shift = 0;
datetime LBT;
//---------------------------------------------------------
extern string TMA = "TMA指标参数"。
外部字符串 TimeFrame = "当前时间框架"。
外置 int HalfLength = 56;
外部int Price = "PRICE_CLOSE;
外置双倍ATRMultiplier = 2.0。
外部的ATRPeriod = 100。
外部 bool Interpolate = true。
//---------------------------------------------------------
双重PriceHigh, PriceLow, SL, TP。
int票。
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int OnInit()
{
如果(Digits == 3 || Digits == 5)
{
TakeProfit *= 10。
StopLoss *= 10;
滑移*=10。
}
return(INIT_SUCCEEDED)。
}
//+------------------------------------------------------------------+
//|专家去初始化函数|
//+------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
如果(CountSell() == 0 && Bid >= PriceHigh)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
如果 (ticket > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。
TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。
如果(OrderSelect(ticket, SELECT_BY_TICKET))
如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print(" 订单修改错误!")
}
}
如果(CountBuy() == 0 && Ask <= PriceLow)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
如果 (ticket > 0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
如果(OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("修改买入订单错误!")
} else Print("打开买入订单出错")。
}
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int init()
{
//--------
//--------
返回(0)。
}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
如果(CountSell() == 0 && Bid >= PriceHigh)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
如果 (ticket > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。
TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。
如果(OrderSelect(ticket, SELECT_BY_TICKET))
如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("修改卖出订单错误!")
} else Print("打开卖出订单出错!")
}
如果(CountBuy() == 0 && Ask <= PriceLow)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
如果 (ticket > 0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
如果(OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("修改买入订单错误!")
} else Print("打开买入订单出错")。
}
如果(Ask <= PriceLow && CountSell() > 0)
{
for (int i = OrdersTotal() -1; i>0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderMagicNumber() == Magic && OrderType() == OP_SELL)
如果(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Print("卖出订单关闭错误!")
}
}
}
如果(Bid >= PriceHigh && CountBuy() > 0)
{
for (int i = OrdersTotal() -1; i>0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Print("OrderClose Buy error!)
}
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0。
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++。
}
}
return(count)。
}//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0。
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++。
}
}
return(count)。
}
//+------------------------------------------------------------------+
//|专家去初始化函数|
//+------------------------------------------------------------------+
int deinit()
{
//+-------
//+-------
返回 (0)
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int Start()
{
//-----
bool error = fals;
如果(LBT!=Time[0]) {
如果(OrdersTotal()!=0) {
for (int i=0; i<OrdersTotal(); i++){
如果(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2){
double SL = OrderStopLoss();
如果OrderType()==0) {
switch (TralType) {
case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
突破。
case 1: SL = High[1] - iATR(NULL,0,ATR,Period,1)*ATR_K;
突破。
case 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。
突破。
}
如果(SL<OrderStopLoss())
SL = OrderStopLoss()。
}
如果(OrderType()==1) {
switch (TralType) {
case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
突破。
case 1: SL = Low[1] + iATR(NULL,0,ATR,Period,1)*ATR_K;
突破。
case 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。
突破。
}
如果(SL>OrderStopLoss())
SL = OrderStopLoss()。
}
如果(SL!=OrderStopLoss()){
if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))
error = true。
}
}
}
}
if (!error)
LBT = Time[0]。
}
返回(0)。
}
//+------------------------------------------------------------------+
为了获得这方面的经验,我将免费为你的有趣想法和策略编写25个EA。
只剩下19个EA了
我在EA中添加了尾随止损功能,我对它进行了评论,但它产生了两个错误。- 我可能有一些错误,但我不知道如何修复它们。然而交易在价格分别触及通道的上限和下限后,根据旧的策略被关闭。我想这里也必须要改变一些东西。- 回电给dnr军队的人。
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#属性链接 "https://www.mql5.com"
#财产版本 "1.00"
#属性严格
//---------------------------------------------------------
外来的双倍Lots = 0.01。
外置 int TakeProfit = 600;
外来的int StopLoss = 25;
外来的int Magic = 0001;
外置 int Slippage = 3;
extern int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.
外部双SAR_Step = 0.02。
外置双SAR_Max = 0.2。
外置 int ATR_Period = 14;
外置双倍ATR_K = 2.0。
外来的HMA_Period = 16。
外部实习生HMA_Method = 3;
外部inttern HMA_Shift = 0;
datetime LBT;
//---------------------------------------------------------
extern string TMA = "TMA指标参数"。
外部字符串 TimeFrame = "当前时间框架"。
外置 int HalfLength = 56;
外部int Price = "PRICE_CLOSE;
外置双倍ATRMultiplier = 2.0。
外部的ATRPeriod = 100。
外部 bool Interpolate = true。
//---------------------------------------------------------
双重PriceHigh, PriceLow, SL, TP。
int票。
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int OnInit()
{
如果(Digits == 3 || Digits == 5)
{
TakeProfit *= 10。
StopLoss *= 10;
滑移*=10。
}
return(INIT_SUCCEEDED)。
}
//+------------------------------------------------------------------+
//|专家去初始化函数|
//+------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
如果(CountSell() == 0 && Bid >= PriceHigh)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
如果 (ticket > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。
TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。
如果(OrderSelect(ticket, SELECT_BY_TICKET))
如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print(" 订单修改错误!")
}
}
如果(CountBuy() == 0 && Ask <= PriceLow)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
如果 (ticket > 0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
如果(OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("修改买入订单错误!")
} else Print("打开买入订单出错")。
}
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int init()
{
//--------
//--------
返回(0)。
}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
如果(CountSell() == 0 && Bid >= PriceHigh)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
如果 (ticket > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits)。
TP = NormalizeDouble(Bid - TakeProfit*Point, Digits)。
如果(OrderSelect(ticket, SELECT_BY_TICKET))
如果(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("修改卖出订单错误!")
} else Print("打开卖出订单出错!")
}
如果(CountBuy() == 0 && Ask <= PriceLow)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
如果 (ticket > 0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)。
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
如果(OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print("修改买入订单错误!")
} else Print("打开买入订单出错")。
}
如果(Ask <= PriceLow && CountSell() > 0)
{
for (int i = OrdersTotal() -1; i>0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderMagicNumber() == Magic && OrderType() == OP_SELL)
如果(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Print("卖出订单关闭错误!")
}
}
}
如果(Bid >= PriceHigh && CountBuy() > 0)
{
for (int i = OrdersTotal() -1; i>0; i--)
{
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Print("OrderClose Buy error!)
}
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0。
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++。
}
}
return(count)。
}//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0。
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
如果(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++。
}
}
return(count)。
}
//+------------------------------------------------------------------+
//|专家去初始化函数|
//+------------------------------------------------------------------+
int deinit()
{
//+-------
//+-------
返回 (0)
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int Start()
{
//-----
bool error = fals;
如果(LBT!=Time[0]) {
如果(OrdersTotal()!=0) {
for (int i=0; i<OrdersTotal(); i++){
如果(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2){
double SL = OrderStopLoss();
如果OrderType()==0) {
switch (TralType) {
case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
突破。
case 1: SL = High[1] - iATR(NULL,0,ATR,Period,1)*ATR_K;
突破。
case 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。
突破。
}
如果(SL<OrderStopLoss())
SL = OrderStopLoss()。
}
如果(OrderType()==1) {
switch (TralType) {
case 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
突破。
case 1: SL = Low[1] + iATR(NULL,0,ATR,Period,1)*ATR_K;
突破。
case 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift,fals,fals," ,1,0,0)。
突破。
}
如果(SL>OrderStopLoss())
SL = OrderStopLoss()。
}
如果(SL!=OrderStopLoss()){
if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))
error = true。
}
}
}
}
if (!error)
LBT = Time[0]。
}
返回(0)。
}
//+------------------------------------------------------------------+
我在专家顾问中加入了尾随止损功能,我将其编译后得到两个错误。- 我百思不得其解,我想不出如何修复它们以获得猫头鹰。然而交易在价格分别触及通道的上限和下限后,根据旧的策略被关闭。我想这里也必须要改变一些东西。- 把它还给朝鲜民主主义人民共和国军队的人。
你不应该发送垃圾邮件。
如果我做错了什么,我向你道歉。我仍然不明白我是如何发送垃圾邮件的...我想我给两位同志发了两条信息。还是不允许这样做?- 我的错。