#include <stderror.mqh>//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
int Err;
//----if(...........) //покупаем
{
Err=OrderSend(..................);
if(Err<0)
SetArrow(159, Blue,"ошибка открытия № "+GetLastError(),Time[0],Open[0],2);
}
if(...........) //продаем
{
Err=OrderSend(..................);
if(Err<0)
SetArrow(159, Red,"ошибка открытия № "+GetLastError(),Time[0],Open[0],2);
}
//----return(0);
}
//+------------------------------------------------------------------+//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка значка на графике, объект OBJ_ARROW. |//+----------------------------------------------------------------------------+//| Параметры: |//| cd - код значка |//| cl - цвет значка |//| nm - наименование ("" - время открытия текущего бара) |//| t1 - время открытия бара (0 - текущий бар) |//| p1 - ценовой уровень (0 - Bid) |//| sz - размер значка (0 - по умолчанию) |//+----------------------------------------------------------------------------+void SetArrow(int cd, color cl,
string nm="", datetime t1=0, double p1=0, int sz=0) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[0];
if (p1<=0) p1=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
ObjectSet(nm, OBJPROP_TIME1 , t1);
ObjectSet(nm, OBJPROP_PRICE1 , p1);
ObjectSet(nm, OBJPROP_ARROWCODE, cd);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_WIDTH , sz);
}
下午好。
能否请您告诉我如何在图表上做标记?例如,订单没有打开,但至少要在图表上看到,在这一点上它应该已经打开。
我想在图表上放置一个标记。
像这样
是的,对不起,我弄糊涂了,第一次在论坛上写作。先是抄写,然后决定手写,结果弄混了......。但上面的例子是正确的...
MA1>MA2,MA1<MA3,MA3<MA4
阅读以下主题
这里有一些奇怪的东西。
MA1>MA2,MA2>MA3,然后MA1<MA3
更重要的是,它足以
问题是这样的。这不是我第一次遇到这种情况了。
例如,如果在每个tick上调用 traal或breakeven函数,将弹出错误1。这意味着,根据文件规定。
ERR_NO_RESULT 1 Нет ошибки, но результат неизвестен
如果不是在启动函数中公开调用,即不只是在启动 中直接输入参数的函数,而是在每个柱子上调用,即不是按tick来调用,那么错误--不...
我的意思是像这样。
为什么要这样?
而在一般情况下,如何更明智地实施?每次打钩都会耗费大量资源吗?
Всем добрый день.
我需要你的帮助。我不明白发生了什么事。
如果(OrderStopLoss()!= NormalizeDouble(t6,5))
{
a=10;
}
OrderStopLoss()=1.3017和NormalizeDouble(t6,5)=1.3017条件仍然成立,即a=10。但它不应该被满足。
这方面的原因可能是什么?
问题是这样的。这不是我第一次遇到这种情况了。
例如,如果在每个tick上调用traal或breakeven函数,将弹出错误1。这意味着,根据文件规定。
如果不是在启动函数中公开调用,即不只是在启动 中直接输入参数的函数,而是在每个柱子上调用,即不是按tick来调用,那么错误--不...
我的意思是像这样。
为什么要这样?
而在一般情况下,如何更明智地实施?每次打钩都会耗费大量资源吗?
问题是这样的。这不是我第一次遇到这种情况了。
例如,如果在每个tick上调用traal或breakeven函数,将弹出错误1。这意味着,根据文件规定。
如果不是在启动函数中公开调用,即不只是在启动 中直接输入参数的函数,而是在每个柱子上调用,即不是按tick来调用,那么错误--不...
我的意思是像这样。
为什么要这样?
而在一般情况下,如何更明智地实施?是不是每次打钩都会耗费大量资源?
拖网试图将SL移到同一水平。 我们需要增加一个检查,拖网水平应该与当前SL不同。
拖网试图将SL移动到同一水平。应增加一项检查,拖网水平必须与目前的SL不同。
如果停止-新的停止(以b.u为单位)不为零...然后我们修改...如果没有,我们就不修改。这就是为什么我不清楚这种情况如何发生。毕竟,我明白我需要检查过去和新的停止 的平等,我已经做了。我有一张这方面的支票。
你好!请告知我如何才能将我的初始和最终订单修改为1个T/P,谢谢。
gi_304 = CountTrades();
g_price_212 = 0;
double ld_24 = 0;
for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {
OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
g_price_212 += OrderOpenPrice() * OrderLots();
ld_24 += OrderLots();
}
}
}
if (gi_304 > 0) g_price_212 = NormalizeDouble(g_price_212 / ld_24, Digits);
if (gi_332) {
for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {
OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
if (OrderType() == OP_BUY) {
g_price_180 = g_price_212 + TakeProfit2 * Point;
gd_unused_196 = g_price_180;
gd_308 = g_price_212 - Stoploss * Point;
gi_268 = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
if (OrderType() == OP_SELL) {
g_price_180 = g_price_212 - TakeProfit2 * Point;
gd_unused_204 = g_price_180;
gd_308 = g_price_212 + Stoploss * Point;
gi_268 = TRUE;
}
}
}
}
if (gi_332) {
if (gi_268 == TRUE) {
for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {
OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) OrderModify(OrderTicket(), g_price_212, OrderStopLoss(), g_price_180, 0, Yellow);
gi_332 = FALSE;
}
}
}
return (0);
你好!请告知我如何才能将我的初始和最终订单修改为1个T/P,谢谢。
编辑这段代码,使它看起来不像是一个黑客