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

 
MiniMe:
Спасибо, Ральф, но я бы упустил своп, а я хочу включить прибыль/убыток по свопу в закрытие ордеров.

Но первый цикл накапливает и прибыль, и своп, не так ли?

Я думал, что цифра Equity - это та, которую нужно сравнить с тем, что 5 пипсов будут означать для открытых лотов...., и тогда вам не нужно будет вычислять цену безубыточности.

 

Привет Ральф

У меня есть 3 переменные

OrdLots ; в лотах и представляет собой открытые лоты, но здесь будет пропущен своп.

Equity ; это общая прибыль убыток и эта переменная будет включать своп

MinPro ; это мой тейк-профит, который составляет 5 пунктов + точка безубыточности.

Я не могу использовать OrdLots для определения прибыли/убытка в пунктах, так как это пропустит своп.

Я не могу использовать Equity для нахождения прибыли/убытка в пунктах, потому что для этого мне нужно знать, сколько лотов используется, а мой расчет для лотов пропускает своп.

Каким-то образом мне нужно использовать функцию и OrdLots, и Equity, чтобы знать, сколько пипсов открыто.

Возможно, в MT4 есть что-то готовое, связанное с балансом счета или эквити счета, но я не нашел.

Решение, которое вы предложили с благодарностью, будет находить прибыль/убыток в пунктах без учета свопа, но я уже поставил функцию для этого ... Я хочу выйти на 5 пунктов выше безубытка со свопом.

 

Сравнение времен и цикла do

Привет всем.

Я очень неопытен с языком Mql4. Я хочу сравнить openordertime с Int var и если он превышает определенное количество времени, а ордера все еще открыты, я хочу увеличить количество открытых ордеров, чтобы я мог попытаться достичь безубыточной ситуации или, возможно, ситуации прибыли, а затем закрыть все открытые ордера в то же время и установить максимальное количество ордеров обратно к первоначально разрешенному максимуму. Может ли кто-нибудь помочь мне или показать мне код в другом посте, который уже делает что-то подобное.

Я использую этот код, но кажется, что он не работает.

// Если ордера открыты в течение длительного времени, закрываем ордера и пытаемся выйти в безубыток

void TimeProtection()

{

int totalorders = OrdersTotal();

for(int i=totalorders-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if ( OrderSymbol()==Symbol() )

{

prTime = OrderOpenTime();

prTime = prTime * CallTime;

if (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3;

флаг = 1;

break;

}

}

}

return;

}

Мне очень нужна ваша помощь в этом вопросе.

Спасибо

 
MiniMe:
Привет Ральф

У меня есть 3 переменные

OrdLots ; в лотах и представляет собой открытые лоты, но здесь будет пропущен своп.

Equity ; это общая прибыль-убыток, и эта переменная будет включать своп

MinPro ; это мой тейк-профит, который составляет 5 пунктов + точка безубыточности.

Я не могу использовать OrdLots для определения прибыли/убытка в пунктах, так как это пропустит своп.

Я не могу использовать Equity для нахождения прибыли/убытка в пунктах, потому что для этого мне нужно знать, сколько лотов используется, а мой расчет для лотов пропускает своп.

Каким-то образом мне нужно использовать функцию и OrdLots, и Equity, чтобы знать, сколько пипсов открыто.

Возможно, в MT4 есть что-то готовое, что связано с балансом счета или эквити счета, но я не нашел.

Решение, которое вы предложили с благодарностью, найдет прибыль/убыток в пунктах без учета свопа, но у меня уже есть функция для этого... Я хочу выйти на 5 пунктов выше безубытка со свопом.

А... может быть я понимаю... Итак, если вы также накапливаете прибыль без свопа в EquityNoSwap в первом цикле, тогда вы могли бы использовать это, а не Equity в моем утверждении "if". (?) Потому что тогда тест будет "есть ли прибыль в 5 пунктов относительно цены безубытка+своп?", что фактически то же самое, что "есть ли прибыль в 5 пунктов, игнорируя своп?". (или, может быть, я все еще не понимаю).

В принципе, "прибыль+своп" - это относительный "безубыток", и, таким образом, "прибыль" - это относительный "безубыток+своп", а "прибыль" распределяется по "OrdLots". В общем, вам все еще не нужно определять фактическую цену в пунктах для "безубыточности".

 

Лучшая идея кодирования советника

Я начинаю этот тред, чтобы получить некоторую помощь здесь. Я учусь кодировать для приложенного индикатора, но это не сработало. Может ли кто-нибудь помочь? Это очень надежный индикатор, и если кто-то сможет сделать советника для него, это будет почти святой Грааль. tia.

Основная схема такова:

1.открываем позицию на продажу, когда появляется красная стрелка,

2.открываем позицию на покупку при появлении белой стрелки и автоматически закрываем все позиции на продажу.

3.применяется для любого таймфрейма.

4.без стоп-лосса,

5.добавить функцию ордера.

Жду ответа!

//+------------------------------------------------------------------+

//| IINWMARROWS.mq4 |

//| Основано на EMA_CROSS.mq4 |

//| Copyright ?2006, MetaQuotes Software Corp. |

//| Программное обеспечение для торговли на рынке Форекс: Торговая платформа MetaTrader 4

//| Последнее небольшое изменение внесено Iin Zulkarnain | //| Copyright ?

//+------------------------------------------------------------------+

#property copyright "Copyright ?2006, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

//----

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 Red

#property indicator_width1 2

#property indicator_width2 2

//----

double CrossUp[];

double CrossDown[];

extern int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int FasterMA= 3;

extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

extern int SlowerMA= 3;

//+------------------------------------------------------------------+

//| Пользовательская функция инициализации индикатора |

//+------------------------------------------------------------------+

int init()

{

//---- индикаторы

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция деинициализации индикатора.

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Пользовательская функция итерации индикатора |

//+------------------------------------------------------------------+

int start()

{

int limit, i, counter;

double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter;

double Range, AvgRange;

int counted_bars=IndicatorCounted();

//---- проверка на возможные ошибки

if(counted_bars<0) return(-1);

//---- последний подсчитанный бар будет пересчитан.

if(counted_bars>0) counted_bars--;

//----

limit=Bars-counted_bars;

for(i=0; i<=limit; i++)

{

counter=i;

Range=0;

AvgRange=0;

for(counter=i ;counter<=i+9;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);

}

Range=AvgRange/10;

fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);

fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);

fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);

//----

slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);

slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);

slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);

if ((fasterMAnow > slowerMAnow) && (fasterMAprevious slowerMAafter))

{

CrossUp=Low - Range*0.5;

}

else if ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))

{

CrossDown=High + Range*0.5;

}

}

return(0);

}

//+------------------------------------------------------------------+этот поток для обучения правильному кодированию, я учусь кодировать для

 

Великим и храбрым кодерам

может ли кто-нибудь добавить максимальное количество позиций для этого советника

или позволить ему работать только с одной позицией?

заранее спасибо

Файлы:
reverse_1.mq4  16 kb
 

Post Deleted

 

вопрос не по теме

Можно ли перехватить данные из программы с открытым исходным кодом?

У них плохой язык программирования (похож на Metastock, но хуже, нет функции "previous"). Они разрешают только свои индикаторы и у них монополия на данные (по закону). Невозможно написать DLL расширение, чтобы мои индикаторы работали в реальном времени. Я слышал что-то вроде "функция прослушивания порта в excell", но я понятия не имею, что это такое.

Всем программистам за ответ большое спасибо.

 

Открыть ордер на другую пару

Здравствуйте,

Есть ли способ открыть ордер для другой валютной пары.

Например, советник работает на графике EURUSD, но я хочу открыть ордер на USDJPY.

Возможно ли это.

Заранее спасибо

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0, "Com",0,0,CLR_NONE);