Вопрос профессионалам MQL4. Почему не работает код?
#property copyright ""
#property link ""
#property indicator_chart_window
int Orders;
//+------------------------------------------------------------------+
int start()
{
if (Orders>OrdersTotal()) AlertOrder();
Orders=OrdersTotal();
return(0);
}
//+------------------------------------------------------------------+
void AlertOrder()
{
string txt;
double ocp;
int i=OrdersHistoryTotal()-1;
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
ocp=OrderClosePrice();
if (ocp==OrderStopLoss()) txt=«SL»;
if (ocp==OrderTakeProfit()) txt=«TP»;
string lots=DoubleToStr(OrderLots(),2);
SendNotification(«Ордер „+“(»+lots+")"+" закрыт по "+txt+" "+
DoubleToStr(ocp,Digits)+" прибыль "+DoubleToStr(OrderProfit(),2));
} }
//+------------------------------------------------------------------+
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{… }
else {
Print(GetLastError() );
}
да и в первый if-блок не мешает GetLastError пихнуть
да какая разница, что в обвязке наворочено, если сам алгоритм определения «а не стоп ли это сработал» — ущербный сам по себе?
Да и идея сама — тоже ущербна. Правильно говорят — стопы придумали для дураков. Держать их в явном виде и показывать говнокухне (пусть даже и брокеру) — верх неосмотрительности. Держать их надо в следящем коде и крыть по маркету.
Кухня тебя и так обует и собъет твой стоп без слипажа и объяснений, а на бирже — уж на каком проводе сидишь. И, что значит «нефиговым»? В цифрах? Давай уж поконкретней будем, а?
единственное что кухни бабло могут тупо не вернуть — это да, есть такое дело))
Я про ECN ничего сказать не могу — с кухонного форекса сразу на Запад перебрался.
А по уму, кивания на скорость (я и себя имею ввиду) меня бесят аж веко дергается :) Вот смотри, я начал торговать в кухне, где исполнение было 2-5 сек, спайки, спреды, полный беспредел, вобщем, весь джентльменский набор. Щаз я сам на коротком проводе (не выдам :). Виртуалка в Чикаге — 10 мс. И еще что-то киваем на исполнение :) У меня полавтомат считает с точностью до 100 мксек. HFT-шники работают с десятками мксек. А мы — слипаж больше, слипаж меьше… Грустно все это… Торговать учиться надо :) Это я и себе в т.ч.
А приумерить — ты советуй… ну, своей поварешке ровнее щи наливать.
«скрипт, который уведомляет меня о том, что сделка закрылась» — причем тут тогда ТП и ПЛ? Ты выложил один код, а имеешь ввиду и рассуждаешь совсем о другом…
Так сделка закрывается либо по тейку, либо по стопу, и я хочу это сразу увидеть, скрипт нашел, но он не ничего не делает.
По поводу поварешки — не понял, кого ты имеешь в виду.
По поводу валютного рынка, у нас в банке торгуют трейдеры с опытом нескромным, соответственно, суммы тоже достаточно большие, счет был открыт через такого же брокера, естественно, не очень популярного среди физиков, но всегда все было замечательно и никаких стопосъемов не было, я сам лично сравнивал с данными из Блумберга. Именно поэтому, я утверждаю, что надо просто правильно выбрать брокера и не париться! Естсественно, если имеется большой депозит, то гораздо приятней действительными активами торговать и от этого не стоит отказываться!)
Поварешка — черпак. Все мимо миски норвовит хоть каплю, но пролить :)
Я с торговал под двумя или тремя банками. Поверь — хлыщи еще те. В МТ все предусмотрено, чтобы обуть клиента.
Политика держать стопы в ДЦ — порочна сама по себе, независимо от кода. Управляя ими самостоятельно ты можешь сам их и мониторить без этих костылей.
А если ты опять меня не обманул и действительно речь ведешь ТОЛЬКО о ТП и СЛ, то вообще не связывайся с этим скриптом — смотри на знак OrderProfit и будет тебе щазтье :)
Этот скрипт отсылает уведомлении при закрытии сделки, компилируется ок, но почему-то не пашет!
#property link ""
#property indicator_chart_window
int Orders=1;
//+------------------------------------------------------------------+
int start()
{
if (Orders>OrdersTotal()) AlertOrder();
Orders=OrdersTotal();
return(0);
}
//+------------------------------------------------------------------+
void AlertOrder()
{
string txt;
double ocp;
int i=OrdersHistoryTotal()-1;
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
ocp=OrderClosePrice();
if (ocp==OrderStopLoss()) txt=«SL»;
if (ocp==OrderTakeProfit()) txt=«TP»;
string lots=DoubleToStr(OrderLots(),2);
string str=«Ордер » + DoubleToStr(OrderTicket(),0)+ " lots " + DoubleToStr(OrderLots(),2) + " закрыт по " + txt + " " +
DoubleToStr(ocp,Digits) + " прибыль " + DoubleToStr(OrderProfit(),2);
Comment(str);
}
}
//+------------------------------------------------------------------+
здесь для наглядности выводит в коммент можно отослать SendNotification