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

 

миш

У меня выдалась свободная минутка, и я попытался передать ваше намерение, как я его понял.

Файлы:
advicerr.txt  2 kb
 

Спасибо

Спасибо ralph.ronnquist

Эти функции - именно то, что мне нужно, и они будут полезны другим людям, которым нужна такая же функция.

Я был пойман, иначе поблагодарил бы вас раньше, особенно потому, что это потребовало усилий.

Есть ли простой способ изменить функцию для работы в тестере стратегий? Я знаю, что результаты работы только с одной валютой в тестере почти бесполезны, но они очень приблизительно имитируют то, что мне нужно, чтобы получить математику правильно, любая помощь ценится, и я никогда бы не разработал код в короткие сроки, так что еще раз спасибо!

 

Советник на основе DT_ZZ.mq4

У меня небольшие проблемы с этим.

У меня есть индикатор DT_ZZ.mq4, и из того, что я вижу, он очень многообещающий. Я знаю, что этот индикатор перерисовывает, и вот как я вижу его работу.

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

Кто-нибудь может помочь с этим? (Код размещен ниже)

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

//| DT_ZZ.mq4 |

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

// optimized by Rosh

#property indicator_chart_window

#property indicator_buffers 3

#property indicator_color1 Green

#property indicator_color2 Blue

#property indicator_color3 Red

//---- параметры индикатора

extern int ExtDepth=12;

extern int calculateLevel=2;

//---- буферы индикатора

double zzL[];

double zzH[];

double zz[];

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

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

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

int init()

{

// IndicatorBuffers(3);

//---- настройки рисования

SetIndexStyle(0,DRAW_SECTION);

SetIndexStyle(1,DRAW_ARROW);

SetIndexStyle(2,DRAW_ARROW);

SetIndexArrow(1,159);

SetIndexArrow(2,159);

//---- отображение буферов индикатора

SetIndexBuffer(0,zz);

SetIndexBuffer(1,zzH);

SetIndexBuffer(2,zzL);

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

SetIndexEmptyValue(2,0.0);

//---- короткое имя индикатора

IndicatorShortName("DT_ZZ("+ExtDepth+")");

//---- инициализация выполнена

return(0);

}

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

//| |

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

int start()

{

int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos;

double curlow, curhigh, lasthigh, lastlow;

double min, max;

int counted_bars=IndicatorCounted();

if (counted_bars==0)

{

ArrayInitialize(zz,0.0);

ArrayInitialize(zzL,0.0);

ArrayInitialize(zzH,0.0);

lasthighpos=Bars; lastlowpos=Bars;

lastlow=Low;lasthigh=High;

Print("limit=",Bars-ExtDepth);

for(shift=Bars-ExtDepth; shift>=0; shift--)

{

curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift);

curlow=Low[curlowpos];

curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift);

curhigh=High[curhighpos];

//------------------------------------------------

if( curlow>=lastlow ) { lastlow=curlow; }

else

{

//???? ????

if( lasthighpos>curlowpos )

{

zzL[curlowpos]=curlow;

///*

min=100000; pos=lasthighpos;

for(i=lasthighpos; i>=curlowpos; i--)

{

if (zzL==0.0) continue;

if (zzL<min) { min=zzL; pos=i; }

zz=0.0;

}

zz[pos]=min;

//*/

}

lastlowpos=curlowpos;

lastlow=curlow;

}

//--- высокий

if( curhigh<=lasthigh ) { lasthigh=curhigh;}

else

{

// ???? ?????

if( lastlowpos>curhighpos )

{

zzH[curhighpos]=curhigh;

///*

max=-100000; pos=lastlowpos;

for(i=lastlowpos; i>=curhighpos; i--)

{

if (zzH==0.0) continue;

if (zzH>max) { max=zzH; pos=i; }

zz=0.0;

}

zz[pos]=max;

//*/

}

lasthighpos=curhighpos;

lasthigh=curhigh;

}

zz[0]=Close[0];

}

//----------------------------------------------------------------------

}

else

{

int pos2;

i=0;

while (pos2<calculateLevel && i<Bars-1)

{

if (zz!=0 && (zzH!=0||zzL!=0)) pos2++;

i++;

}

pos2=i-1;

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

{

zzH=0;

zzL=0;

zz=0;

}

if (zzH[pos2]!=0)

{

lasthighpos=pos2;

lasthigh=High[pos2];

lastlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,pos2);

lastlow=Low[lastlowpos];

}

else

{

lastlowpos=pos2;

lastlow=Low[pos2];

lasthighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,pos2);

lasthigh=High[lasthighpos];

}

//------------------------- ????????? ??????

Print("limit=",pos2-1);

for(shift=pos2-1; shift>=0; shift--)

{

curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift);

curlow=Low[curlowpos];

curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift);

curhigh=High[curhighpos];

//------------------------------------------------

if( curlow>=lastlow ) { lastlow=curlow; }

else

{

//???? ????

if( lasthighpos>curlowpos )

{

zzL[curlowpos]=curlow;

///*

min=100000; pos=lasthighpos;

for(i=lasthighpos; i>=curlowpos; i--)

{

if (zzL==0.0) continue;

if (zzL<min) { min=zzL; pos=i; }

zz=0.0;

}

zz[pos]=min;

//*/

}

lastlowpos=curlowpos;

lastlow=curlow;

}

//--- высокий

if( curhigh<=lasthigh ) { lasthigh=curhigh;}

else

{

// ???? ?????

if( lastlowpos>curhighpos )

{

zzH[curhighpos]=curhigh;

///*

max=-100000; pos=lastlowpos;

for(i=lastlowpos; i>=curhighpos; i--)

{

if (zzH==0.0) continue;

if (zzH>max) { max=zzH; pos=i; }

zz=0.0;

}

zz[pos]=max;

//*/

}

lasthighpos=curhighpos;

lasthigh=curhigh;

}

}

//------------------------- ????????? ??????

zz[0]=Close[0];

}

return(0);

}

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

можно ли это изменить в 4 тестере стратегий?

ralph.ronnquist

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

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

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

Возможно ли изменить работу Ральфа, чтобы удовлетворить эту потребность.

Спасибо

Файлы:
ralph.txt  2 kb
 

В принципе, вам нужно только изменить строку "EURCHF" на "EURUSD". Т.е. для работы с длинным "EURUSD" против короткого "EURUSD".

 

Я пробовал.

Спасибо за ваш ответ, но я безрезультатно пытался. Код, который вы предоставили, научил меня и мою девушку тому, как мало мы знаем о программировании!

Большое спасибо!

 

Хм. Единственный "недостаток", который я вижу, это тест "v == cut", который сравнивает два двойных числа на равенство. Возможно, лучше рассматривать только полные суммы в $, и таким образом изменить "euprofit", "ecprofit", "cut" и "v" на тип "int"?

 
NTrader:
Тривиальный вопрос: Я пишу новый персональный индикатор в первый раз. Я не могу просмотреть свои логи, которые я делаю с помощью команды Print ("...") в методе start{}. Где я могу просмотреть их в MetaTrader 4?

Хорошо, я использую команду Comment()...

 

Дамбо здесь

Привет всем

Это отличная тема для такого человека, как я, который ничего не знает о программировании. Здесь много полезной информации и много маленьких кусочков кода, которые я могу скопировать и поиграть с ними.

Я надеюсь, что кто-нибудь сможет помочь мне с этим вопросом. Я хочу сделать советника, основанного на цене. Что мне нужно ввести в код, чтобы сделать следующее:

1) Я хочу, чтобы советник смотрел на цену в 20:00 на часовом графике и смотрел, как она связана со 100sma.

2) Если цена выше 100sma, я хочу, чтобы он открыл 2 ордера на покупку на определенном уровне.

3) Эти уровни основаны на цене закрытия 16:00 свечи, поэтому если 16:00 свеча равна 1.2000, я хочу, чтобы он открыл ордера на покупку по 1.1120 и 1.2080.

У меня есть стопы, трейлинг стопы и уровни прибыли, все разработано и все такое, все коды взяты из этой темы. Поэтому я благодарю тех, кто их опубликовал. I

Я буду вечно в долгу, если кто-то сможет мне помочь.

С уважением

Сьюзан

 

Помогите

Привет всем

Я пытался создать советника и получил следующее сообщение об ошибке:

'\end_of_program' - ending bracket '}' expected C:\...\My_First_EA.mq4(96,1)

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

Это второй советник, который я пробовал, с тем же сообщением об ошибке, основанный на том же индикаторе.

Спасибо.

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