Как кодировать? - страница 46

 
antone:
Так что может ли кто-нибудь помочь мне, пожалуйста? Например, он будет торговать только одним ордером в 5 утра - 10 утра, но может торговать снова в другое время...

Это очень просто, нужно проверить время открытия ордера последнего ордера в истории, а затем проверить день с помощью функции TimeDay. Если это сегодня, то не торговать.

 
Kalenzo:
Все очень просто, вам нужно проверить время открытия ордера последнего ордера в истории, а затем проверить день с помощью функции TimeDay. Если это сегодня, то не торгуйте.

не могли бы вы дать мне простой скрипт, как их использовать? я не программист, извините.

спасибо!

 

1 трейлинг-стоп / несколько ордеров

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

extern int profit = 100;

extern int stop = 20;

int start()

{

int i, HstTotal=OrdersHistoryTotal();

for(i = HstTotal-1; i >= 0; i --)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;

OrderModify(i,OrderOpenPrice(),Bid-Point*stop,profit,0,Green);

}

}

 

Вместо этогоиспользуйте OrdersTotal() и MODE_TRADES

 
 
Kalenzo:
Все очень просто, вам нужно проверить время открытия ордера последнего ордера в истории, а затем проверить день с помощью функции TimeDay. Если это сегодня, то не торгуйте.

for(int k=0;k<OrdersTotal();k++)

{

OrderSelect(k,SELECT_BY_POS,MODE_TRADES;

if(OrderSymbol()== "GBPUSD" && OrderMagicNumber()== Magic_Number)

{

if(OrderOpenTime() != TimeCurrent ()) {Trade = true;}

if(OrderOpenTime() == TimeCurrent ()) {Trade = false;}

}

}

что я сделал не так? пожалуйста, помогите

 

Поправки выделены красным цветом.

Роберт

antone:

for(int k=0;k<OrdersTotal();k++)

{

OrderSelect(k,SELECT_BY_POS,MODE_TRADES)

if(OrderSymbol()== Symbol() && OrderMagicNumber()== Magic_Number)

{

if(TimeDay( OrderOpenTime())!= Day()) {Trade = true;}

if(TimeDay( OrderOpenTime()) == Day() ) {Trade = false;}

}

}

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

int openHour = TimeHour(OrderOpenTime());

if (openHour > 10 && openHour < 13) Trade = false;

if (openHour = 13) Trade = true;

Что я сделал не так? Пожалуйста, помогите
 

ATTN Программисты - Проблема с новыми 6-значными ценами

Всем программистам.

До меня дошло, что существует проблема с использованием некоторыми брокерами дополнительного десятичного знака для цен. Это вызовет проблему везде, где Point используется в расчетах для таких вещей, как StopLoss, TakeProfit или Breakout Levels.

Есть простое решение.

Теперь я использую следующую функцию и заменяю все ссылки на Point на myPoint.

Я объявляю переменную в верхней части советника.

double myPoint;

затем в init я использую функцию для установки значения.

init()

{

myPoint = SetPoint();

}

Затем функция.

// Устанавливает значение Point с 2 или 4 знаками после запятой

// для работы с брокерами, которые используют 3 и 5 знаков после запятой

double SetPoint()

{

double mPoint;

if (Digits < 4)

mPoint = 0.01;

иначе

mPoint = 0.0001;

return(mPoint);

}

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

Пожалуйста, передайте это на любой форум или группу, где программисты нуждаются в этой информации.

Я уже написал об этом в Yahoo group MTE & I.

Надеюсь, это поможет.

Роберт

 

Gidday

Мне нужна помощь, я не могу понять, как выйти из позиции через определенное количество баров/дней. Например, я выхожу в понедельник, а система выходит на закрытии через 5 баров/дней.

Любая помощь была бы кстати.

Спасибо

Бено

 

Бено,

Вы можете использовать код, аналогичный приведенному выше, для неторговых операций. Просто проверьте, является ли текущий день количеством дней позже для закрытия от дня открытия. Код может быть модифицирован для использования часов или минут.

Другим способом было бы вычисление времени закрытия сделки как exit_time, когда сделка открыта. Затем для выхода просто проверьте exit_time в коде проверки выхода.

Вам нужно будет использовать соответствующую формулу, чтобы добавить правильное значение к времени открытия для получения времени закрытия. Для этого нужно использовать количество минут на бар * количество баров позже закрытия, добавленное к OrderOpenTime().

Надеюсь, это поможет.

Роберт

Beno:
Gidday

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

Любая помощь была бы кстати.

Спасибо

Бено
Причина обращения: