Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 208

 
borilunad:
Тогда смотри выше, поправил!
Получается,что когда меня обвиняли в отсутствии булевой логики - имели в виду лишние скобки в операторах....но это же правила форматирования выражений и операторов....разве это булева логика?
 
T-G:

Всем привет. Нужна помощь.

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

1-ордер-лот=128

2-ордер-лот=256

3-ордер-лот=512

4-ордер-лот=1024

5-ордер-лот=2048

это все для тестера надо.

MaxOrders = 5, и открыто 5 ордеров. Но проблема в том что в тестере у брокера ограничение на лот 1000 стоит соответственно 4 и 5 ордер не откроется как надо.

Перерыл инэт искал как поменять в тестере в fxt файле этот параметр, не нашел точно как это сделать.

Поэтому решил силами программирования решить данный вопрос. И открывать несколько ордеров для 4 ордера получается два

4-ордер-лот=1000

4-ордер-лот=24

для 5 ордера 3:

5-ордер-лот=1000

5-ордер-лот=1000

5-ордер-лот=48

но тут две проблемы,

- как разбить правильно ММ что бы разбивали на лоты в соответствии с макс лотом

- и как открывать дополнительные ордера но что бы не нарушить порядок то есть ордеров больше будет чем в MaxOrders но не считать дополнительные ордера которые открываются для соблюдения объема.

Наверное всё же дробить лоты, открывать по несколько позиций, связанных меж собою комментариями, в которых прописаны тикеты родительского и дочернего ордеров. В ордере с объёмом в 1000 прописывается тикет ордера с объёмом в 24, а в этом, соответственно - тикет того, что с объёмом в 1000. И закрывать, модифицировать их так же связкой придётся... Или проще - микро-счёт и лоты совсем мелкие. В расчётах для визуального отслеживания лоты множьте на коэффициент, чтобы они приняли величину, нужную вам...

Больше ничё на ум не приходит, кроме ДЦ, позволяющего бОльшие объёмы

Ну или ... делите на 100 ваши лоты

 
artmedia70:

Чтобы ясно изложить условия необязательно быть знатоком булевой алгебры...

Давайте я вам облегчу малость жизнь... Заменяйте if на привычное если, else на иначе, && на и, || на или и т.п. ... тогда вы уже сможете своими нормальными словами прочесть то, что написано или определиться с тем, что хотите написать.

Что написано у вас (пока опустим неверное описание условий):

1. if (ot==0) Если нет рыночных ордеров (вообще никаких, ни рыночных, ни отложенных, ни открытых этим советником, другим советником или вручную)... Если да, то выполняется строка 2, если нет, то переходим на строку 3.

2. if (Bid==Price) Если цена равна цене открытия текущей свечи... Если да, то выполняется строка 3, если нет, то переходим на строку 4.

3. if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point)) Если цена открытия первой свечи больше цены закрытия первой свечи более чем на 100 пунктов и менее, чем 120 пунктов... Если да, то выполняется строка 4, если нет, то переходим на строку 5.

4. if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point)) Если максимум первой свечи выше цены открытия первой свечи более чем на 40 пунктов и менее чем на 60 пунктов... Если да, то выполняется строка 5, если нет, то переходим на строку 6.

5. if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point)) Если закрытие первой свечи выше минимума первой свечи более чем на 40 пунктов и менее чем на 60 пунктов... Если да, то выполняется строка 6, если нет, то переходим на строку 7.

6.

7.

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

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

например:

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

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

 
solnce600:
Получается,что когда меня обвиняли в отсутствии булевой логики - имели в виду лишние скобки в операторах....но это же правила форматирования выражений и операторов....разве это булева логика?

Нет - отсутствие фигурных скобок там, где они необходимы. Применительно к логическому блоку поиска размера свечи в вашем советнике
 
solnce600:

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

Я вам поправил код, чтобы он всё-таки отслеживал закрытие по стопу - назначил-таки за вас значение магику. Сам не проверял.
 

Добрый день. Уважаемые, подскажите как реализовать такое условие в советнике.

сделки открываются на часовом ТФ при определенных условиях, но нужно сделать так что бы сделки открывались только при соответствии условиям на 4 часовом графике.

Ну как пример: если на часовом графике пересеклись средние открываем сделку при условии что на 4 часовом графике средние с другими параметрами пересечены в том же направлении. Буду благодарен за ответы, и помощь.

 
teplovoz:

Добрый день. Уважаемые, подскажите как реализовать такое условие в советнике.

сделки открываются на часовом ТФ при определенных условиях, но нужно сделать так что бы сделки открывались только при соответствии условиям на 4 часовом графике.

Ну как пример: если на часовом графике пересеклись средние открываем сделку при условии что на 4 часовом графике средние с другими параметрами пересечены в том же направлении. Буду благодарен за ответы, и помощь.

Применительно к МАшкам для получения данных с Н4 для первого и второго баров:

double MA1_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,2);

Для получения данных с Н1 для первого и второго баров:

double MA1_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,2);

По аналогии делайте и для других периодов и индикаторов.

 
artmedia70:

Применительно к МАшкам для получения данных с Н4 для первого и второго баров:

По аналогии делайте и для других периодов и индикаторов.



ого. туплю, получается просто в параметрах машек нужно указать нужный ТФ и все? Спасибо, мозг отказывается работать в последнее время :)
 
artmedia70:
Я вам поправил код, чтобы он всё-таки отслеживал закрытие по стопу - назначил-таки за вас значение магику. Сам не проверял.


Еще раз. Болшое спасибо.
 
Ничё страшного, у всех приключаются иногда...
Причина обращения: