Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
привет ребята
У меня вопрос... как мне изменить следующее;
extern double MaxLot = 1.50;
double max_lot = GetMaxLot(OP_BUY, OP_SELL);
if (max_lot >= MaxLot) lot = CalcHedgeLot(order_type;)
(order_type)]: ", lot);
if (lot == -1) return (lot);
lot = NormalizeDouble(lot, LotPrec);
if (lot > MaxLot) lot = MaxLot;
if (lot < MinLot) lot = MinLot;
return (lot);
}
вышеописанная проверка для OP_BUY и OP_SELL
вопрос: как мне изменить это на любой OP_BUY ИЛИ любой OP_SELL
ценитеВы должны изменить код функции GetMaxLot(), или, возможно, вы можете использовать GetMaxLot(OP_BUY, OP_BUY); и GetMaxLot(OP_SELL, OP_SELL); (зависит от кода - можно сделать так или нет).
Но я думаю, что стоит попробовать.
Goen
Это то, что вы ищете?
-----------
int bars_count=WindowBarsPerChart();
int bar=WindowFirstVisibleBar();
-----------
GoenСпасибо, Гоен.
Вы должны изменить код функции GetMaxLot(), или, возможно, вы можете использовать GetMaxLot(OP_BUY, OP_BUY); и GetMaxLot(OP_SELL, OP_SELL); (зависит от кода - можно сделать так или нет).
Но я думаю, что стоит попробовать.
GoenСпасибо за ответ...
что мне нужно изменить здесь? Спасибо за помощь
double GetMaxLot(int type1, int type2)
{
double max_lot = 0.0;
int cnt = OrdersTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;
if (OrderType() != type1 && OrderType() != type2) continue;
if (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots();
}
}
return (max_lot);
}
немного в растерянности...
как добавить алерт к индикатору tis?
У меня есть индикатор пересечения МА, который работает очень хорошо, но у него нет поддержки звукового оповещения, из-за чего я пропускаю много сделок, не могли бы вы научить меня, как добавить оповещение к этому индикатору, так как я ничего не знаю о мета-коде... Спасибо...
вот код для индикатора вместе с самим индикатором, спасибо...
/*[[
Имя := EMA Cross
Автор := Hapsa
Ссылка := http://www.metaquotes.net/
Отдельное окно := Нет
Отдельное окно := Нет
Первый цвет := Красный
Первый тип рисунка := Символ
Первый символ := 108
Использовать вторые данные := Да
Второй цвет := Темно-оливково-зеленый
Второй тип рисунка := Символ
Второй символ := 108
]]*/
#property copyright "Hapsa"
#property link ""
extern int SlowPeriod=20;
extern int FastPeriod=5;
#property indicator_buffers 3
#property indicator_chart_window
#property indicator_color1 Red
#property indicator_color2 Green
double L20[];
double L50[];
double shift=0,val1=0,val2=0;
int init()
{
IndicatorBuffers(3);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(0, 108);
SetIndexArrow(1, 108);
SetIndexBuffer(0,L20);
SetIndexBuffer(1,L50);
//---- индикаторы
//----
return(0);
}
int start()
{
int counted_bars=IndicatorCounted();
//----
int i = Bars - counted_bars - 1;
while (i>=0)
{
val1=0;
val2=0;
double iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);
double iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i);
double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);
double iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i);
if (iMaFastPreviousiMaSlowCurrent ) val1=High;
if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low;
L20=val1+5*Point;
L50=val2-5*Point;
i--;
}
//----
return(0);
}
Спасибо за ответ.
что мне нужно здесь изменить? спасибо за помощь
double GetMaxLot(int type1, int type2)
{
double max_lot = 0.0;
int cnt = OrdersTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;
if (OrderType() != type1 && OrderType() != type2) continue;
if (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots();
}
}
return (max_lot);
}Да, вы можете использовать GetMaxLot(OP_BUY,OP_BUY); для получения максимального лота только для открытой сделки на покупку, и GetMaxLot(OP_SELL,OP_SELL); для получения максимального лота только для открытой сделки на продажу.
Вы можете упростить этот код "if (max_lot == 0 || OrderLots() >= max_lot)" до "if (OrderLots() > max_lot)".
Потому что если max_lot = 0, то автоматически он будет меньше любого лота открытых сделок. И знак ">=" заменить на ">", потому что если они имеют одинаковое значение, нет необходимости обновлять max_lot с тем же значением, бесполезные усилия. Он будет обновляться только если новое значение больше max_lot.
Изменив этот код, вы сможете ускорить процесс.
Goen
проблема со стоплоссом
Здравствуйте,
Я новичок во всем этом форексе/метатрейдинге, но пытаюсь понять, как все это работает.
Сейчас я пытаюсь написать советника и боюсь, что упускаю что-то фундаментальное.
Если в моем коде я заменю
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red);
на
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red);
При тестировании этой новой версии в тестере стратегий я получаю МЕНЬШЕ ордеров. Как добавление стоплосса может уменьшить количество входов ордеров? Я могу представить, что количество увеличивается в том случае, если добавление стоп-ордера заставляет ордера выходить раньше и, таким образом, новые ордера могут быть добавлены быстрее, но МЕНЬШЕ ордеров...?
Есть идеи?
Спасибо
Здравствуйте,
Я новичок во всем этом форексе/метатрейдинге, но пытаюсь понять, как все это работает.
Сейчас я пытаюсь написать советника и боюсь, что упускаю что-то фундаментальное.
Если в моем коде я заменю
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red);
на
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red);
При тестировании этой новой версии в тестере стратегий я получаю МЕНЬШЕ ордеров. Как добавление стоплосса может уменьшить количество входов ордеров? Я могу представить, что количество увеличивается в том случае, если добавление стоп-ордера заставляет ордера выходить раньше и, таким образом, новые ордера могут быть добавлены быстрее, но МЕНЬШЕ ордеров...?
Есть идеи?
Спасибо10 пунктов может быть слишком близко к установленному брокером пределу стопа (у разных брокеров по-разному) - это означает, что если это минимум 10 пунктов, и цена случайно качнется на 1 пункт внутри этого предела в момент размещения ордера, ордер будет отклонен...
Omelette, вы правы, увеличение стоплосса все исправило, спасибо! :-)
#property indicator_color2 Yellow
extern bool TrendDirectionUp=true;
string Color1;
string Color2;
int init() {
if(TrendDirectionUp==true)//Conditionj 1
{
Color1=Yellow;
Color2=CLR_NONE;
}
if(TrendDirectionUp==false)//Condition2
{
Color1=CLR_NONE;
Color2=Magenta;
}
SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);
SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);
SetIndexArrow(0,172);//333
SetIndexArrow(1,172);//334
SetIndexBuffer(0,b1);
SetIndexBuffer(1,b2);
return(0);
}Сейчас оба цвета (цвета) 1 и 2 показывают "черный" на графике!!!
Может ли любой эксперт Гуру помочь мне решить эту проблему?
Заранее спасибо!