//Procedure OrderSendBuyvoid OrderSendBuy(string WorkSymbol,double LotsSize=0,int Slippage=3,int SizeSL=0,int SizeTP=100,
string Text=NULL,int MN=0,datetime Expiration=0,color OrdrtColor=CLR_NONE){//----------------------------------------------------------------------------//// Служебные переменныеdouble RealAsk, RealBid;//Текущие Ask и Bid инструментаdouble SymbolPoint;//Размер пункта текущего инструментаdouble SL, TP;// StopLoss и TakeProfit будущей позицииint TicketNew;//Тикер новой позиции (в случае удачи, иначе -1)//----------------------------------------------------------------------------////Зашита от дуракаif( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize =MarketInfo( WorkSymbol,MODE_MINLOT);}//Расчет параметров для новой позиции
SymbolPoint =MarketInfo( WorkSymbol,MODE_POINT);//Определяем размер пункта
RealAsk =MarketInfo( WorkSymbol,MODE_ASK);//Определяем Ask
RealBid =MarketInfo( WorkSymbol,MODE_BID);//Определяем Bidif( SizeTP>0){ TP = RealAsk+ SizeTP* SymbolPoint;}else{ TP = RealAsk+100* SymbolPoint;}if( SizeSL>0){ SL = RealBid- SizeSL* SymbolPoint;}else{ SL =0;}//Попытка открыть позицию с рынка
TicketNew =OrderSend( WorkSymbol,OP_BUY, LotsSize, RealAsk, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);//Проверка ошибок возникших при открытии новой позицииif( TicketNew==-1)//При открытии произошла ошибка{Print("Попытка открыть Market-Buy позицию по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}else//Позиция успешно установлена{Print("Успешно создана позиция Market-Buy по паре ", WorkSymbol," Тикер новой позиции #", TicketNow);Alert("Open market-Buy, ticket ", TicketNew," Open price ", RealAsk," Profit ", TP," SL ", SL);}//----------------------------------------------------------------------------//}
//Procedure OrderSendLimitBuyvoid OrderSendLimitBuy(string WorkSymbol,double LotsSize=0,int Slippage=3,int LimitStep=50,int SizeSL=0,int SizeTP=100,string Text=NULL,int MN=0,datetime Expiration=0,color OrdrtColor=CLR_NONE){//----------------------------------------------------------------------------//// Служебные переменныеdouble RealAsk, RealBid;//Текущие Ask и Bid инструментаdouble OpenPrice;//Цена на которую будет установлен отложникdouble SymbolPoint;//Размер пункта текущего инструментаdouble SL, TP;// StopLoss и TakeProfit будущей позицииint TicketNew;//Тикер новой позиции (в случае удачи, иначе -1)//----------------------------------------------------------------------------////Зашита от дуракаif( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize =MarketInfo( WorkSymbol,MODE_MINLOT);}//Расчет параметров для новой позиции
SymbolPoint =MarketInfo( WorkSymbol,MODE_POINT);//Определяем размер пункта
RealAsk =MarketInfo( WorkSymbol,MODE_ASK);//Определяем Ask
RealBid =MarketInfo( WorkSymbol,MODE_BID);//Определяем Bid
OpenPrice = RealAsk- LimitStep* SymbolPoint;//Цена на которую будет установлен отложникif( SizeTP>0){ TP = OpenPrice+ SizeTP* SymbolPoint;}else{ TP = OpenPrice+100* SymbolPoint;}if( SizeSL>0){ SL = RealBid-( SizeSL+ LimitStep)* SymbolPoint;}else{ SL =0;}//Попытка открыть позицию с рынка
TicketNew =OrderSend( WorkSymbol,OP_BUYLIMIT, LotsSize, OpenPrice, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);//Проверка ошибок возникших при открытии новой позицииif( TicketNew==-1)//При открытии произошла ошибка{Print("Попытка создать Limit-Buy по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError());}else//Позиция успешно установлена{Print("Успешно создан ордер Limit-Buy по паре ", WorkSymbol," Тикер ордера #", TicketNow);Alert("Create Limit-Buy, ticket ", TicketNew," Open price ", OpenPrice," Profit ", TP," SL ", SL);}//----------------------------------------------------------------------------//}
Dmido писал(а) >>
日安)
我是带着问题来找你的。 由于我对EA中的挂单缺乏了解,我回避了很久,但最后我还是被卡住了。我不明白如何在挂单中设置价格。我应该添加什么来代替BID和ASK?我可以使用在这之前计算的任何变量吗?那么,我应该如何设置这个价格,以便以后在下订单时能通过?我得到了很多错误,说没有这样的价格,等等.....。
如果你不介意,你可以用代码解释你的答案...我搜索了这么多,但它说得很偏......((())。
在价值观的质量上,Ask和Bid的想法应该是Ask和Bid的当前值,或者是之前计算的变量。
这里有一个特殊性:你可以把这些值作为真实的值,只用于买入和卖出订单。
最好的办法是使所有的订单以至少6个程序的形式打开,即OrderSendBuy, OrderSendSell, OrderSendLimitBuy, OrderSendLimitSell, OrderSendStopBuy 和 OrderSendStopSell。
PS
应该注意的是,限价单是在最佳价格(与当前价格缩进一定的点数)开立的,而止损单是在当前价格之上或之下的相反方向开立的。
来自市场的开盘代码的例子。
设置挂单 的代码示例。
你好。
我正在测试一个EA。
我得到了不匹配的错误。有什么办法可以避免它们吗?我不明白这是大还是小的错误。鳞片主要是绿色和深绿色,但只有约20%是满的。而且模拟质量不详--这是个问题吗?
也许我甚至不应该关注,我只是不明白......
提前感谢。
你好。
我正在测试一个EA。
我得到了不匹配的错误。有什么办法可以避免它们吗?我不明白这是大还是小的错误。鳞片主要是绿色和深绿色,但只有约20%是满的。而且模拟质量不详--这是个问题吗?
也许我甚至不应该关注,我只是不明白......
提前感谢。
我不知道,我个人从不理会这种事情(因为我几乎总是在没有可视化的情况下测试策略)。
这是我在类似测试期的Jew D1上得到的结果
尝试#1:历史上的条形图--1302点模拟--4313293模拟质量--50.00%。
尝试#2:历史上的条数 - 1303 模拟的点数 - 4323442 模拟的质量 - 50.00%
图表不匹配错误 - 0。
我不知道,我个人从不理会这种事情(因为我几乎总是在没有可视化的情况下测试策略)。
这是我在类似测试期的Jew D1上得到的结果
尝试#1:历史上的条形图--1302 点模拟--4313293 模拟质量--50.00%。
尝试#2:历史:1303 条 -1303 点模拟 -4323442 建模质量 -50.00%。
图表不匹配的误差 -0。
谢谢你。
我认为现在MT会自动填充最后的512条,并填充其余的....。我不知道到底该怎么说。我的专家顾问是一个趋势顾问,距离对我来说很重要,512条不算多。
至于其他符号,可以从一个单独的网站下载,以后再下载?
我感谢你。
下午好,亲爱的朋友们。
我最近一直很笨,也许是天气的原因。
请告诉我,如果数组的元素 数是由外部变量设定的,如何声明一个一维数组(在一个指标中)。
谢谢你。
你好。
我正在测试一个EA。
我得到了不匹配的错误。有什么办法可以避免它们吗?我不明白这是大还是小的错误。鳞片主要是绿色和深绿色,但只有约20%是满的。而且模拟质量不详--这是个问题吗?
也许我甚至不应该关注,我只是不明白......
提前感谢。
我的下文是IMHO,但被引用了--如果我错了,请纠正我。
问题是,M15的第59分钟收盘、第45分钟收盘、M30的第30分钟收盘和H1的收盘可能不一致。
为了吻合,你需要杀死自己的历史,通过从报价服务器下载较小时期的历史记录
并使用下载的历史记录重新计算所有的时间框架。
在这种情况下,不同时间段的真实收盘价也可能不一致。
换句话说,你应该用较小的时间框架,用你的HAND读取较大时间框架的数值。
下午好,亲爱的朋友们。
我最近一直很笨,也许是天气的原因。
请告诉我,如果数组的元素数是由外部变量设定的,如何声明一个一维数组(在一个指标中)。
谢谢你。
int y[];
外来的int blah-blah = 100。
init() {
ArrayResize(y, blah-blah)。
}
我的下文是IMHO,但作为引言,如果我错了,请纠正我。
事实是,M15的第59分钟,M30的第45分钟,M30的第30分钟和H1的第30分钟可能不匹配。
为了吻合,你需要杀死自己的历史,通过从报价的服务器上下载较小时期的历史记录
并使用下载的历史记录重新计算所有的时间框架。
在这种情况下,不同时间段的真实收盘价也可能不一致。
也就是说,从好的方面来说,你应该采取较小的时间框架,读取较大的时间框架的数值。
О!手!!!。
谢谢你的回答。但从第一部分来看,我明白,这些错误对我来说并不关键。非常感谢你解释了这些错误的机制。
在最顶端。
我特别纠结于这些旗帜,谁能重新看一下?
-----------------
而且EA的代码也有问题。
这不是交易!也许有人会对它有一个新的看法。
决定愚蠢的,只要100(-100)去交易!
我附上EA!