[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 85

 
OTPOK:

И еще один - Как изменить программно stoploss уже открытого ордера??


https://docs.mql4.com/ru/trading/OrderModify
 
FOReignEXchange:


Добрый день. Я так понял Вы никогда не присваивали значения переменным. Это делается очень просто.

PriceBuy=Ask


Вообще-то: PriceBuy=Bid;
 
Roger:

Вообще-то: PriceBuy=Bid;

Ну это кому как надо. А если реально, то Аsk.
 

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

Подскажите, пожалуйста, правильно ли построено выражение для подсчёта общей суммы последовательности чисел delta*(2*Lot+Lot*(i-2))*(i-1)/2 :

for (int i=1; i<=MaxOrders; i++) {

double Sum=Lot;

Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2; }

Если ошибок нет, то как значение "Sum+" подставить в выражение типа X=("Sum+" + Y)/Z ???

Исходник кода:

for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         Price = NormalizeDouble(Ask-delta*i*Point,Digits);
         double Sum=Lot;
         Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2;
         DeltaProfitL = (Sum+i*delta*Lot+Lot*R_Lot*R_point+Lot*R_Lot*delta*i)/((2*Lot+Lot*(MaxOrders-1))*MaxOrders/2+Lot+Lot*R_Lot);
         if (takeprofit!=0) TP  = NormalizeDouble(Price + (takeprofit + DeltaProfitL*zero_tp)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0;     
         OPENORDER ("Buy Limit",Price,SL,TP,i);
      }
   }

Заранее благодарю.

 
nemo811:

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

Подскажите, пожалуйста, правильно ли построено выражение для подсчёта общей суммы последовательности чисел delta*(2*Lot+Lot*(i-2))*(i-1)/2 :

for (int i=1; i<=MaxOrders; i++)

double Sum=Lot;

Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2;

Если ошибок нет, то как значение "Sum+" подставить в выражение типа X=("Sum+" + Y)/Z ???

Заранее благодарю.


А так не получится?

for (int i=1; i<=MaxOrders; i++)

Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;

Только не понятно почему Sum=Lot; И зачем вообще это.

 
FOReignEXchange:


Только не понятно почему Sum=Lot; И зачем вообще это.

Я задавал подобный вопрос на 81 странице. Сделал всё в соответствии с данным мне ответом. Но пока результата нет.

Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2; - для моего расчёта не подойдёт.

 
delta*(2*Lot+Lot*(i-2))*(i-1)/2 является формулой числа рассматриваемой последовательности. Мне необходимо просуммировать ВСЕ числа данной последовательности.
 
nemo811:
delta*(2*Lot+Lot*(i-2))*(i-1)/2 является формулой числа рассматриваемой последовательности. Мне необходимо просуммировать ВСЕ числа данной последовательности.


Ну так я и написал формулу для этого.

Я так понимаю надо рассчитать типа такого

Сумма = delta*(2*Lot+Lot*(1-2))*(1-1)/2 + delta*(2*Lot+Lot*(2-2))*(2-1)/2 + delta*(2*Lot+Lot*(3-2))*(3-1)/2 + ... и тд.

Это и есть формула Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2, где ограничения для i Вы сами задаёте в теле оператора. По окончании работы оператора Sum примет нужное значение. Важно, чтобы перед тем,как оператор начнёт выполнять вычисления, Sum был равен нулю перед началом. А по выходу из оператора Sum примет нужное значение.

 

Доброго времени суток,ребят,скажите сколько будет стоить заказать советник???

Ах да и вообще возможно сделать так чтобы он работал сразу на 2х разных валютах(одновременно на двух графиках)причем открывал по каждому разные сделки.

Например на первом ПОКУПАЛ а на втором наоборот продавал?

А по закритию одной из сделок открывал противоположенную уже открытой сделке....

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

 
for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         Price = NormalizeDouble(Ask-delta*i*Point,Digits);
         double Sum=0;
         Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;   ........
      }
}
Спасибо. Так будет правильно?