任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1094

 
alvlaf:

你是在图表上手动放置EA,并希望它在每个图表上打开MaxOpenOrders订单还是TOTAL MaxOpenOrders订单?什么订单:只是市场订单还是包括限价和止损在内的所有订单?

 
A13ksandr:

你是在图表上手动放置EA,并希望它在每个图表上打开MaxOpenOrders订单还是TOTAL MaxOpenOrders订单?什么订单:只是市场订单还是包括限价和止损在内的所有订单?

我们需要它来打开所有工具的订单。假设MaxOpenOrders是1,它应该只开一个市场订单。这是一个二元期权的机器人,没有挂单。然而,它是以系列方式运作的,如果在亏损的情况下平仓,那么就会建立同样的头寸,只是手数要大一些,直到系列交易以盈利结束,就不应该为其他工具建立交易。
 
A13ksandr:
"在这个战略中 "这句话的目的是什么?如果账户中存在手动交易,或者有另一个EA在运行,就需要使用魔法,这样就不会触及这些订单。我想是的。
是的,谢谢你,A13ksandr 我在调试时也会改变魔法,这样就不会等到连败结束。 此外,简单地删除魔法并不改变机器人的操作算法我不打算在那里手动开单。
 
alvlaf:
它需要为所有符号开放。假设MaxOpenOrders是1,它应该只开一个市场订单。这是一个二元期权的机器人,没有挂单。然而,它是以系列方式运作的,如果在亏损的情况下平仓,那么就会建立同样的头寸,只是手数要大一些,直到系列交易以盈利的方式结束,不应建立其他工具的交易。

好吧,我错过了二元期权的部分。出于某种原因,在我看来,如果我手动将同一个EA钉在不同的图表上,它仍然会被算作运行不同的EA。每个图表都将运行1个选项(嗯,当它正常工作时)。我可能是错的,因为我自己是个初学者。我已经在我的EA中以这种方式考虑了多货币。

输入字符串 TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // 交易的符号

string Symbols[50]; // 50是符号的最大数量。

int SymbolCount。

//--------------------------------------------------

int OnInit()

{

如果(IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Symbols[0] = Symbol()。

}

return(INIT_SUCCEEDED)。

}

//--------------------------------------------------

bool ExtractSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Symbols[i])。

Symbols[i] = StringTrimRight(Symbols[i]); //防止意外的空格。

Symbols[i] = StringTrimLeft(Symbols[i]);

}

如果(SymbolCount > 0)返回(true)。

return(false)。

}

//--------------------------------------------------

空白的OnTick()

{

for (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i],SYMBOL_BID);

//等等...

}

}

要将EA应用于任何图表。这样一来,MaxOpenOrders对所有图表都是准确的。

 
//等等...- 我的意思是,它是否进入了EA本身的旧代码?
 
A13ksandr:

好吧,我错过了二元期权的部分。出于某种原因,在我看来,如果我手动将同一个EA链接到不同的图表上,它仍然会被认为是不同的EA在运行。每个图表都将运行1个选项(嗯,当它正常工作时)。我可能是错的,因为我自己是个初学者。我已经在我的EA中以这种方式考虑了多货币。

输入字符串 TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // 交易的符号

string Symbols[50]; // 50是符号的最大数量。

int SymbolCount。

//--------------------------------------------------

int OnInit()

{

如果(IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Symbols[0] = Symbol()。

}

return(INIT_SUCCEEDED)。

}

//--------------------------------------------------

bool ExtractSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols);

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Symbols[i])。

Symbols[i] = StringTrimRight(Symbols[i]); //防止意外的空格。

Symbols[i] = StringTrimLeft(Symbols[i]);

}

如果(SymbolCount > 0)返回(true)。

return(false)。

}

//--------------------------------------------------

空白的OnTick()

{

for (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

//等等...

}

}

要将EA应用于任何图表。这样,MaxOpenOrders对所有图表都是准确的。

这段代码是用MQL5写的吗?
 
A13ksandr:
如果(DayOfWeek() == 1) Price = iOpen(Symbol(), PERIOD_D1, 4);
如果(DayOfWeek() >= 2) 价格 = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

如果下周已经过去了,我还需要从上周二的开盘价 中保留一份报告吗? 我需要一个EA来确定周二的开盘价,并在必要时从它开始,例如--一周、两周、一个月,等等。

谢谢你。

 
yaaarik777:

如果下周已经开始,而我仍然需要从上周周二的开盘价进行报告呢? 也就是说,我需要专家顾问确定周二的开盘价,并在必要时使用它,例如,一周、两周、一个月等等。

谢谢你。

然后你设定一个特定的日期,程序就会取该日的开盘价,这就更简单了。

 
evillive:

然后你设定一个特定的日期,软件就会取该日期的开盘价,这就更简单了。

你能帮我看一下代码吗,我不明白。

您是否认为可以在OnInit()中实现对周二第一根柱子的开盘价 的计算,并在启动时计算出价格并记住它,直到EA重新启动?

我很抱歉,如果我写的是废话,我只是在学习)

 
yaaarik777:

你能帮我看一下代码吗,我不明白。

你认为周二的第一个条形图的价格应该在OnInit()中计算,它将在启动时计算价格并记住它,直到EA重新启动?

如果我写的是胡话,我很抱歉,我只是在学习)

当天第一根柱子的开盘价=每日柱子的开盘价。你可以在Inite中进行,如果你以后不需要重新计算这个值的话。

该代码大约如下。

input datetime dayz=D'2016.09.06 00:00'; //зададим прошлый вторник, начало суток

int bar_dayz=0;
double price_dayz=0;

int OnInit()
{
////...
bar_dayz=iBarshift(_Symbol,PERIOD_D1,dayz); 
price_dayz=iOpen(_Symbol,PERIOD_D1,bar_dayz);
///...
}