Помощь в кодировании - страница 109

 

модификацияотложенного ордера

Привет всем, я пытался запрограммировать модификацию цены для отложенных ордеров. Это один из моих первых советников. Я хочу написать как можно больше советников, чтобы потом писать сложные. С моей модификацией ордеров у меня проблема, что она не работает, когда я накладываю ее на график на моем демо-счете. Может ли кто-нибудь найти ошибку и помочь мне исправить ее? Спасибо. У меня действительно больше нет подсказок. Спасибо

{ RefreshRates(); double ppoint=MarketInfo(OrderSymbol(), MODE_POINT); int total=OrdersTotal(); double pBid=MarketInfo(OrderSymbol(), MODE_BID); double pAsk=MarketInfo(OrderSymbol(), MODE_ASK); double priceNew; //---- for(int i=0; i50*ppoint) { priceNew=(pBid-50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } if (OrderType()==OP_SELLSTOP) { if (OrderOpenPrice()-pAsk>50*ppoint) { priceNew=(pAsk+50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } } }
 

Привет, Роберт, спасибо за помощь. Как мне правильно разместить код здесь? Спасибо и будьте здоровы.

 
fabian103:
Привет, Роберт, спасибо за помощь. Как мне правильно разместить код здесь? Спасибо и будьте здоровы.

fabian103

Вы должны сделать простое копирование и вставку в этом поле php кода.

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

Файлы:
attach.gif  36 kb
 

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

Я пытался вычислить значение полос Боллинджера внутри индикатора стохастик, но у меня не получилось.

Я получаю значение, относящееся к паре, но мне нужно значение, которое должно быть между 0 и 100.

Подскажите, что делать?

Спасибо

 
metcalfe:
Привет,

Я пытался рассчитать значение полос Боллинджера внутри индикатора стохастик, но у меня ничего не получилось.

Я получаю значение, относящееся к паре, но мне нужно значение, которое должно быть между 0 и 100.

Не подскажете?

Спасибо

Я предполагаю, что вы имеете в виду расчет полос Боллинджера стохастика (используя значения стохастика вместо цен символов). Вы не можете сделать это с помощью встроенной функции iBands(), потому что она всегда использует цены основного графика.

Можно использовать iBandsOnArray(), но с ней у вас вечная проблема metatrader: отклонения могут быть только целочисленными мультипликаторами. Вы не можете установить отклонения на дробные значения. Поэтому лучше всего использовать функции iStdDevOnArray() и iMaOnArry() для расчета собственных полос Боллинджера любого значения и с любой шириной полос. В случае со стохастиком код, который это делает, будет выглядеть следующим образом:

for(int i=limit; i>=0; i--) stoch = iStochastic(NULL,0,StochPeriod,1,StochSlowing,MODE_SMA,StochPrice,MODE_MAIN,i);

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

{

double dev = iStdDevOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollmi = iMAOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollup = bollmi+BollingerDeviations*dev;

bolldn = bollmi-BollingerDeviations*dev;

}

Прикрепляю и сам индикатор, чтобы вы могли продолжить эксперименты с ним. На графике это выглядит так:

____________________

PS: значения полос могут выходить за границы 0 и 100 (в случаях, когда Стохастик завис в районе 0 или 100) в зависимости от того, какой множитель полос вы используете для отклонений и какова длина самого расчета полос Боллинджера.

 
mladen:
Я предполагаю, что вы имеете в виду расчет полос Боллинджера по стохастику (используя значения стохастика вместо цен символов). Вы не можете сделать это с помощью встроенной функции iBands(), потому что она всегда использует цены основного графика.

Вы можете использовать iBandsOnArray(), но с ней у вас вечная проблема метатрейдера: отклонения могут быть только целочисленными мультипликаторами. Вы не можете установить отклонения в дробные значения. Поэтому лучше всего использовать функции iStdDevOnArray() и iMaOnArry() для расчета собственных полос Боллинджера любого значения и с любой шириной полос. В случае со стохастиком код, который это делает, будет выглядеть следующим образом:

Это СУПЕР ЗАМЕЧАТЕЛЬНО!!!!!

Спасибо большое, я так долго пытался.

И спасибо за супер быстрый ответ.

Еще один вопрос по ступи.

Инди работает очень хорошо, но я не могу получить правильное число на ea о значении диапазонов.

Например, как на картинке, которую вы прикрепили, цифры 81...67...54.....

 
metcalfe:
Это СУПЕР ЗАМЕЧАТЕЛЬНО!!!!!

Спасибо большое, я так долго пыталась.

И спасибо за супер быстрый ответ.

Еще один глупый вопрос.

Инди работает очень хорошо, но я не могу получить правильное число на ea о значении диапазонов.

Например, как на картинке, вы прикрепили числа 81...67...54....

:):)

Длинастохастика в том примере установлена на 32. Это единственная разница по сравнению с параметрами по умолчанию.

 
mladen:
:):):):) Длина стохастика в этом примере установлена на 32. Это единственное отличие от параметров по умолчанию

Извините... я не очень хорошо объяснил, что я хотел спросить.

В моей ea я пытаюсь получить номер, например, верхней или нижней полосы в окне stoch, как на картинке. Например, я хочу в ea получить верхний диапазон, который равен 81.8116, и я закодировал это как

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); \\\renamed the indi

но у меня нет правильного номера.

Где я ошибаюсь?

Спасибо

 
metcalfe:
Извините... я не очень хорошо объяснил, что я хотел спросить.

В моей ea я пытаюсь получить номер, например, верхней или нижней полосы в окне stoch, как на картинке. Например, я хочу в ea получить верхнюю полосу, которая равна 81.8116, и я закодировал это как

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); \\\renamed the indi

но у меня нет правильного номера.

Где я ошибаюсь?

Спасибо

Сделайте вот так:

double upperBand = iCustom(NULL,0,"name",24,1,0,0);[/PHP]

The problem was that you can not put 0 in place of the slowing parameter since in that case metatrader will cause an error when calculating stochastic, and you will always get 0 as a return value, so use 1 instead (it is equivalent to no smoothing of the stochastic value). Also, better to use buffer numbers (MODE_MAIN is a reserved word in MQL - it 0 but in some cases they are not what you expect them to be). To get the rest of the values you would then have to write something similar to this :

[PHP]double middleBand = iCustom(NULL,0,"name",24,1,1,0);

double lowerBand = iCustom(NULL,0,"name",24,1,2,0);
 

Хорошо...

Супер спасибо.

Ты спас меня....