|
22.05.2013, 14:32 | #51 | |
Acrypto-Мастер
Регистрация: 15.02.2013
Сообщений: 7,463
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
|
|
23.05.2013, 21:47 | #52 | |
Мастер
Регистрация: 21.11.2012
Сообщений: 1,531
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
|
|
25.05.2013, 04:15 | #53 |
Мастер
Регистрация: 27.06.2012
Сообщений: 3,849
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Порой даже самый простой алгоритм обреченный на успех в теории может оказаться убыточным на практике - хотя все будет открываться и закрываться так как советуют профи - Такую интригу завели как буд-то там машину времени создают - 50% что данная секретная стратегия и советник не покажут ожидаемого результата.
ИМХО... |
02.06.2013, 09:04 | #54 |
Мастер
Регистрация: 21.11.2012
Сообщений: 1,531
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
не пойму как правильно заканчивать советник или индикатор, вот к примеру часть окончания:
if(i<Bars-1) ExtMapBuffer1[i]+=ExtMapBuffer1[i+1]; i--; } //---- return(0); } //+------------------------------------------------------------------+ и что означает эта скобка "}", но я так понят еще играет большое значение если они идут в группе и одна под одной как к примеру вот здесь } } } можете мне насчет этого дать пояснение? |
02.06.2013, 09:59 | #55 | |
Специалист
Регистрация: 15.09.2012
Сообщений: 919
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Ну эти скобки "}", закрывают предыдушие открытыескобки "{". Вот пример из простого индикатора МА: //+------------------------------------------------------------------+ //| Smoothed Moving Average | //+------------------------------------------------------------------+ void smma() { double sum=0; int i,k,pos=Bars-ExtCountedBars+1; //---- main calculation loop pos=Bars-MA_Period; if(pos>Bars-ExtCountedBars) pos=Bars-ExtCountedBars; while(pos>=0) { if(pos==Bars-MA_Period) { //---- initial accumulation for(i=0,k=pos;i<MA_Period;i++,k++) { sum+=Close[k]; //---- zero initial bars ExtMapBuffer[k]=0; } } else sum=ExtMapBuffer[pos+1]*(MA_Period-1)+Close[pos]; ExtMapBuffer[pos]=sum/MA_Period; pos--; } } Они ставятся не наугад, а определённое количество. Т.е. столько сколько было открыто вначале. И под конец может выйти такая лесенка как у вас из 3-х скобочек, а может как у меня из 2-х скобочек. Всё завсит от кода. Или вы не про это спрашивали?) |
|
11.10.2013, 14:58 | #56 | |
Новичок
Регистрация: 22.08.2013
Сообщений: 18
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Выдержка из справки mql: "Составной оператор (блок) состоит из одного или большего числа операторов любого типа, заключенных в фигурные скобки { }. После закрывающейся фигурной скобки не должно быть точки с запятой (http://forum.forex-investo.ru/public...DIR#>/wink.png." Если в коде встречается закрывающая фигурная скобка "}", значит должна быть и открывающая. Например нужно подсчитать общую прибыль по всем рыночным ордерам, открытым по текущему инструменту. Для этого на потребуется: 1. Обнулить переменную, где будет храниться прибыль по всем ордерам. (double sum=0 2. Открываем цикл по индексам от 0 до КоличествоОрдеров-1 с шагом 1. (for(int idx=0;idx<OrdersTotal();idx++)) { 2.1 Выбираем ордер по индексу. (OrderSelect(idx, SELECT_BY_POS, MODE_TRADES)http://forum.forex-investo.ru/public...DIR#>/wink.png 2.2 Проверить если ордер имеет тип OP_BUY или OP_SELL (if(OrderType()>=2) continue 2.3 Получить значение текущей прибыли для выбранного ордера. (double profit=OrderProfit()http://forum.forex-investo.ru/public...DIR#>/wink.png 2.4 Добавить полученное значение прибыли ордера к общему значению прибыли. (sum=sum+pofit } В данном примере фигурные скобки обозначают, что пункты 2.1-2.4 будут выполняться в теле цикла, т.е. для каждого ордера. В итоге после выполнения цикла переменная sum будет содержать общую прибыль по всем ордерам. Если скобки опустить, то компилятор не выдаст ни одной ошибки. Но результат выполнения будет следующим: В теле цикла будет содержаться только !ОДИН оператор (2.1). Все остальные операторы будут выполнены после окончания выполнения цикла. Следовательно переменная sum будет содержать значение прибыли для последнего выбранного в цикле ордера. |
|
17.02.2014, 17:04 | #57 |
Новичок
Регистрация: 15.02.2014
Сообщений: 1
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
думаю идея не новая но что-то в инете не нашёл, советник должен открывать сделки на пересечении двух Slope Direction Line, индикаторы он видит - то есть нажимаю открыть график - они на графике, но сделки открывает ваще непонятно как, или такой индикатор сложный что простые функции не для него ?
|
22.01.2015, 09:41 | #58 | |
Мастер
Регистрация: 15.07.2013
Сообщений: 1,079
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Хотя тема давняя, но жаль, что просят помочь в разборе и допиливания советника и даже не выкладывают его для скачивания, как это обычно в самом описании темы. А там уже разницы нету, есть ли будущее в советника, или ТС по которой он работает. Если обсудили тему на ветке, то уже секретного в ней ничего нету. |
|
10.02.2015, 19:28 | #59 | |
Мастер
Регистрация: 06.12.2012
Сообщений: 1,014
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
|
|
21.02.2015, 18:30 | #60 |
Интересующийся
Регистрация: 29.11.2012
Сообщений: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
ПОПРОБУЙТЕ ТАК: double val1;
double val2 ; if(val1>val2) //С низу в верх bool S=1; if(val1<val2) // C верху в низ bool B=1; if(val1<val2 && S==1) // только при пересечении сверху в низ; { OrderSend(Symbol(), OP_SELL, lots, Bid, slip, Ask + StopLoss*Point, Ask - TakeProfit*Point, NULL, Magic); S=0; } if(val1>val2 && B==1 ) { OrderSend(Symbol(), OP_BUY, lots, Ask, slip, Bid - StopLoss*Point, Bid + TakeProfit*Point, NULL, Magic); B=0; } У меня вопрос? есть индикатор, на графике рисует плавную линию, а в функции iC данные на каждом баре и в 4 знаке Как снять показания индикатора с самого графика?. Индикатор без доступа к коду. |