[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 189

 

Когдато учил основы программирования (25 лет назад - Algol 60 :))) Тогда все начиналось с создания алгоритма (квадратики, ромбики), а потом этот алгоритм описывался языком. Сейчас ни где алгоритмов не вижу, команд - не знаю.

Ребята, посоветуйте толковый учебник по mql4. Желательно с конкретными примерами написания экспертов, начиная с алгоритма.

 
v721965 писал(а) >>

Когдато учил основы программирования (25 лет назад - Algol 60 :))) Тогда все начиналось с создания алгоритма (квадратики, ромбики), а потом этот алгоритм описывался языком. Сейчас ни где алгоритмов не вижу, команд - не знаю.

Ребята, посоветуйте толковый учебник по mql4. Желательно с конкретными примерами написания экспертов, начиная с алгоритма.

https://book.mql4.com/ru/

 
alvish >>:
профи подскажите пожалуйста, согласно справке по языку mql5 там нет функции iHighest как рассчитать максимальный хай за N период??? ..нужно написать функцию самостоятельно,..попробовал через copyHigh и fmax, но так лишь для определенного периода и не то конечно, помогите

Вот Вам Пример:

         int shift_Box_Start = iBarShift(NULL, 0, TimeBoxStart);
         Box_Start_High      = High[iHighest(NULL, 0, MODE_HIGH, shift_Box_Start-i, i+1)];
         Box_Start_Low       =  Low[iLowest(NULL,  0, MODE_LOW,  shift_Box_Start-i, i+1)];

Только с шифтами разберитесь как следует.

 

1. Пытаюсь запустить советник в режиме тестирования с визуализацией. Советник простой: выдает сообщение через Alert. Когда Alert стоит в init, то сообщение выдается при запуске. Когда стоит в start, то советник не реагирует при поступлении нового тестирующего тика. В чем дело?

2. В этом же режиме тестирования запускаю скрипт, который выдает через Alert значения Time[1], Close[1],... (для справки). Выяснил, что указанные значения берутся по текущему (настоящему) времени, а не по времени прихода тестирующих тиков и формируемых на графике баров. Что можно предпринять?

 
Roger писал(а) >>

У меня для EURGBP возвращает - 0 (это Альпари) шорт и -0.68 лонг и это точно в долларах.

Для альпари тип вычисления свопа равен 0, а у меня 1,

Хотя мне нужно знать все типы вычисления.

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

Вот код который все это высчитывает и возвращает ближайшее к реальному свопу значение.

int a,b,c,d,dd;

dd=1;

double raznica;

for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

int a_=0,b_=0,c_=0,d_=0;

raznica=1000000;

OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);

if(OrderSwap()!=0){

if(OrderType()==OP_BUY){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

double gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPLONG),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_BUY){

if(OrderType()==OP_SELL){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPSHORT),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_SELL){

}//if(OrderSwap()!=0){

}//for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

Результатов не получил ни для альпари ни для БРОКО.

То, есть

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

OrderLots()

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

MarketInfo(OrderSymbol(),MODE_BID)

Недостаточно для расчета свопа.

Здесь должно быть что то еще, но вот что?

 
Спасибо chief2000, но вы написали через стандартные iHighest и iLowest вот в чем и проблема их то в mql 5 и нет
 
alvish >>:
Спасибо chief2000, но вы написали через стандартные iHighest и iLowest вот в чем и проблема их то в mql 5 и нет

Теперь вижу что я невнимательно прочитал вопрос.

Неужели действительно в 5-й версии придется все вручную описывать? Что-то тут не то - может проблема с документацией?

 
вот вот
 
vasya_vasya >>:

Для альпари тип вычисления свопа равен 0, а у меня 1,


Вася_Вася ну ты че паришься я ж тебе ответил здесь 'Свопы в mql4' коротенько

если надо могу подробней,

всего 4 варианта

для каждого своя формула

 
kaisa писал(а) >>

Вася_Вася ну ты че паришься я ж тебе ответил здесь 'Свопы в mql4' коротенько

если надо могу подробней,

всего 4 варианта

для каждого своя формула

да, можно остальные формулы?