ordersend() помощь в кодировании... - страница 3

 
mugged:

Raptor, если вы не возражаете... как вы планировали проверять соединение через php?

Я имел в виду следующее:

Советник будет посылать небольшой файл по FTP каждые 2 минуты (может быть 5 минут, 30 минут, как вам угодно ... * ) на мой хостируемый веб-сервер, на этом веб-сервере будет запущено задание Cron, которое ищет файл, полученный по FTP, и проверяет, был ли он обновлен за последние 2 минуты * если нет, то посылает мне предупреждение по электронной почте.

 
SDC:
Я всегда так делал, потому что так это делается в книгах по MQL4, но теперь я думаю, что это не выглядит правильно, конечно, если вы открываетесь по цене Ask, вы хотите взять прибыль по этой цене + ваша сумма TP, и вы хотите остановиться по этой цене - ваша сумма SL?

Если вы хотите остановиться на цене x. Что это значит? Вы хотите остановиться, когда Bid достигнет цены-x (или когда Ask достигнет ее).

Если вы хотите SL в 3 пункта на покупку и используете Ask - 3*pips2dbl. В момент открытия вы уже находитесь на расстоянии 1 пункта (при спреде в 2 пункта). Опять же, зависит от вашего определения.

Если вы имеете в виду, когда Bid достигнет цены-x, то при покупке ваш SL будет на цене-x. Но при продаже вы все еще хотите остановиться на цене-x, но цена срабатывания должна быть относительно цены спроса. цена-x+спред.

Что вы делаете, когда спред меняется? При продаже это означает, что для закрытия на той же позиции (Bid) вы должны изменить TP/SL. Зависит от вашего определения.

Я делаю все расчеты относительно заявки и корректирую их в конце.

//want to open at P
if (OP == OP_BUY)  double bid.to.open = Ask-Bid, bid.to.stop = 0,       DIR=+1.;
else                      bid.to.open = 0;       bid.to.stop = Ask-Bid; DIR=-1.;
:
if ((Bid - P) *DIR >= 0.){ // Time to open
  double openPrice = Bid + bid.to.open,
  OrderSend(NULL, OP, v, Bid+bid.to.open...)
 
WHRoeder:

Мой подход заключается в том, чтобы просто сообщить об ошибке и вернуться.

Меня беспокоит то, что у меня есть открытый ордер с SL и TP = 0, а мой советник не имеет подключения к Интернету.... Я бы предпочел получить предупреждение о такой возможности, даже если мой советник находится на VPS или на моем собственном сервере.
 

С этим нельзя не согласиться, но я сказал "сообщить об ошибке".

Советник ничего не может сделать с isConnected()==false, кроме как ждать.

Советник ничего не может сделать с ERR_TRADE_TIMEOUT, кроме как подождать, а потом посмотреть.

Возврат от старта и ожидание следующего тика, а затем восстановление - самое простое.

 
WHRoeder:
С этим нельзя не согласиться, но я сказал "сообщить об ошибке". Просто советник ничего не может сделать с isConnected()==false или ERR_TRADE_TIMEOUT, кроме как дождаться следующего тика и затем посмотреть.
Конечно, я просто хотел убедиться, что вы поняли, к чему я клоню, в какой-то момент я бы хотел, чтобы сторожевой пес сообщил мне, что что-то не так ... отсюда и идея с заданием cron и PHP.
 
mugged:

Raptor, если вы не возражаете... как вы планировали проверять соединение через php?

Может быть, что-то вроде этого...

<?php
$to = "recipient@example.com";
$subject = "EA is silent";
$body = "EA has stopped responding . . . ";

$file = 'somefile.txt';
$filetime = filemtime($file);
$timetwomins = time()-120; // two mins ago

if ($filetime < $timetwomins) {
   mail($to, $subject, $body)
}
?>
 

Я думаю, что я сделаю так: у меня будет оповещение по электронной почте непосредственно перед срабатыванием ордера, а затем еще одно, которое подтвердит, что стоп был изменен.

Так что если я получу первое, а соответствующее письмо с изменением не придет, то я буду знать, что есть проблемы.

 
mugged:

Полагаю, что я сделаю так: отправлю оповещение по электронной почте непосредственно перед срабатыванием ордера, а затем еще одно, которое подтвердит, что стоп был изменен.

Так что если я получу первое, а соответствующее письмо с изменением не придет, то я буду знать, что есть проблемы.

Я думаю отправить письмо после срабатывания ордера и еще одно, подтверждающее изменение стопа.
 
qjol:
Я думаю, отправлять письмо после срабатывания ордера и еще одно, подтверждающее, что стоп был изменен.

Единственное, что меня беспокоит при отправке письма после - что если ордер сработает, а затем ваше соединение отключится до того, как письмо будет отправлено...

В другом случае первое письмо сообщает о том, что ордер вот-вот сработает, а второе подтверждает изменение стопа.

 
RaptorUK:

Может быть, что-то вроде этого...


Раптор, мне нравится эта идея. Я думал об этом в прошлом, но не представлял, как это сделать.

То, что у меня есть сейчас, это просто советник, который каждый час отправляет письмо с подтверждением того, что он работает. Мне просто нужно как-то проверить наличие этого письма и, если оно не приходит, отправить предупреждение. Идея та же, но подход другой.