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

 

Большое спасибо за ваш ответ. Это не проблема с аргументами, вычисления в цикле корректны. Я думаю, что проблема во втором вызове iMAonArray вне цикла в функции.

С уважением,

 

Лучший способ добавить MaxBarsToCount (History) к лимиту

когда мы ограничиваем MaxBarsToCount (History) иногда требуется добавить Correction и т.д.

существует ли лучший (самый безопасный, простой, универсальный) способ?

----------------------

например, здесь у нас есть легкое раздувание Фишера 4 Стоха:

----------

int start()

{

int counted_bars=IndicatorCounted();

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

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

int limit=Bars-counted_bars;

if(limit>maxbars)limit=maxbars;

if (limit>Bars-lenth-1)limit=Bars-lenth-1;

//----

for (int shift = limit; shift>=0;shift--)

{

AuxBuffer[shift]=(iStochastic(NULL,0,lenth,2,1,MODE_SMA,0,MODE_MAIN,shift)/100-0.5)

+0.5*AuxBuffer[shift+1];

FishBuffer[shift]= 0.25* MathLog((1+AuxBuffer[shift])/(1-AuxBuffer[shift]))+

0.5*FishBuffer[shift+1];

SignalBuffer[shift]=FishBuffer[shift+1];

}

//----

return(0);

}

------------------------

для фишерской предельной ф-лы:

int limit;

int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

for(int i=limit; i>=0; i--)

{

....

для Stoch:

int start()

{

int i,k;

int counted_bars=IndicatorCounted();

double price;

//----

if(Bars<=draw_begin2) return(0);

//---- начальный ноль

if(counted_bars<1)

{

for(i=1;i<=draw_begin1;i++) MainBuffer=0;

for(i=1;i<=draw_begin2;i++) SignalBuffer=0;

}

//---- подсчет минимумов

i=Bars-KPeriod;

if(counted_bars>KPeriod) i=Bars-counted_bars-1;

while(i>=0)

{

double min=1000000;

k=i+KPeriod-1;

while(k>=i)

{

price=Low[k];

if(min>price) min=price;

k--;

}

LowesBuffer=min;

i--;

}

....

p.s. в прилагаемом индикаторе, основанном на чистом преобразовании фишера и Stoch; MaxBars нужно немного подправить... (когда MaxBars выходит - проблем нет).

 

Привет,

Большое спасибо всем вам. Теперь он работает нормально, и открывается только один ордер на бар. Что хорошо в таком советнике, так это то, что мы можем использовать опцию"Open price only" для бэктестинга, что быстрее, чем "per tick".

 
Michel:
Привет, Omelette, Вы знаете, что у BT есть проблема с просмотром истории: он смотрит на реальную историю, а не на историю BT. Я спрашивал Metaquote несколько месяцев назад об этой проблеме, но у них не было никакого ответа..... Возможно, сейчас это исправлено...

Мишель, спасибо за предупреждение. Вау, я не знал этого - и я бы оценил это как огромный баг!!!

Чтобы проверить это (с MT 208), я использовал информацию OrdersHistoryTotal() для определения направления торговли на мартингейле, и использовал "обычные средства" на другой версии - кривая эквити для обоих "должна" быть идентичной. Вот что я обнаружил.........

Я также только что проверил с последней версией Metatrader, и ошибка все еще там - невероятно......

 

Нужен код MQL

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

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

1) Мне нужно наложить ограничение на советника, например, он не должен открывать позиции с 14:00 до 17:00. Как я могу это сделать? Пожалуйста, дайте мне этот простой код и скажите, где я могу разместить его в советнике.

2) Я не хочу ставить SL в советнике для открытия позиции, потому что брокер охотится за SL. Поэтому мне нужно поставить в советнике проверку "если общая прибыль по открытой позиции +20 пунктов, то закрыть позицию".

Я буду очень благодарен сторонникам, которые всегда поддерживают других людей!

С наилучшими пожеланиями,

Кашиф.

 
oilfxpro:
..... Может ли эксперт просматривать текущие и исторические ставки свопов? OILFXPRO

Боюсь, что нет.

PS - мой ответ выглядит недостоверным. Я имел в виду, что вы не можете получить исторические ставки по свопам - с получением текущих ставок проблем нет...

 

несколько заказов одновременно

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

Я хочу запрограммировать в советнике следующее:

Я хотел бы открыть несколько ордеров одновременно (3-6 ордеров).

1. Ордер : Объем; T/P; S/L; T/S

.

.

.

5. Заказ : Объем; T/P; S/L; T/S

Можете мне помочь?

Спасибо

derumuro

 

Мне нужно кое-чему научиться.

Привет всем

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

Если рыночная цена > значения MA по дельта-пунктам, открываем покупку.

Если рыночная цена < значения MA по дельта-пунктам, открываем продажу.

С TP SL и TS. Может ли какой-нибудь опытный программист научить меня, как написать этот код?

Спасибо

 

Что мне нужно сделать, чтобы изменить этот код, чтобы ордера открывались только тогда, когда все три индикатора синхронизированы либо восходящий тренд (синий) или нисходящий тренд (красный) вручную это работает хорошо и достаточно просто для меня, чтобы следовать LOL.

Я использовал старую ea в качестве шаблона и попытался добавить индикаторы, чтобы создать правильные сигналы. в настоящее время ордера открываются либо с TM, либо с HAS.

Я приложил ea и производительность за последние пару дней. Я знаю, что это ничего не значит, но у этого есть потенциал. IMO

Не мог бы кто-нибудь направить меня в правильном направлении.

Спасибо

Бено

Файлы:
 

Есть ли способ закодировать эту функцию включения так, чтобы не было шансов, что она "застрянет" в своем цикле?

int CBM(int intMagic)//CloseByMagic

{

int intOffset=0;

while(OTBM(intMagic)>0)

{

OrderSelect(intOffset,SELECT_BY_POS);

if(OrderMagicNumber()==intMagic)

{

if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),999,Red);

if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),999,Orange);

}

else {

intOffset++;

}

}

return(0);

}

Спасибо всем, кто может помочь.