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

 
evillive:
Виноват, исправлюсь
Ничего, бывает! Но без ошибок и удачу не заметишь! ;)
 
CJIeCaPb:

Ааа, неправильно указал, да.) 

По отдельности перепроверил. Тикет только у селл был не верный.  Остальные тоже проверил: ордера, сравнения, модификация. Но, все равно ступор после выставления ордеров. По одиночке все работало.

*Условия для входа if(MA=MA1) ,неверно? Ведь =, не является знаком условия, правильно - "==", однако если я так прописываю эксперт вообще ничего не делает. Остальные варианты: ">=",  "<=",   "<",   ">" что и "=" приводят к выставлению ордеров и дальнейшему ступору.

Конечно же не верно, хотя компилятор исправит, но кто знает, правильно он исправит или нет? Может подставить ==, а может и !=, а может и вовсе не исправит, а просто проверку проигнорирует и выставит всегда истину.

Скомпилируйте код с #property strict, там ещё много чего править надо.

Если нужно проверить пересечение 2-х МА, то это не равенством проверяется, критерий должен быть вроде "если МА1(2)<MA(2) и MA1(1)>MA(1) - то вторая МА пересекла первую МА вверх на предыдущей свече". А равенство можно год ждать.

 И что такое while(true), по-вашему?

Далее:

 //+------------------------------------------------------------------06-----------------------------------------------

//Buy

while(OrderType()==1)//Buy (а вот нифига, бай = 0)

и чуть ниже
//--------------------------------------------------------------------------
//Sell
while(OrderType()==2) //опять же, селл = 1
 

Как организовать массив типа int на 1 млрд. значений и затем провести его сортировку? Приведите, пожалуйста, пример.

Пока что стандартными средствами MQL4 я могу организовать массив чисел int размером всего лишь 2 млн значений.

 
solandr:

Как организовать массив типа int на 1 млрд. значений и затем провести его сортировку? Приведите, пожалуйста, пример.

Пока что стандартными средствами MQL4 я могу организовать массив чисел int размером всего лишь 2 млн значений.

Хорошее желание. Прошу Вас сосчитать размер необходимой памяти
 
Vinin:
Хорошее желание. Прошу Вас сосчитать размер необходимой памяти
Проблема понятна. Но как её решить? Существуют ли какие-либо иные способы, кроме как прямого создания массива? То есть каким образом отсортировать 1 млрд значений? Или в MQL4 невозможно придумать какое-то решение?
 
evillive:

Конечно же не верно, хотя компилятор исправит, но кто знает, правильно он исправит или нет? Может подставить ==, а может и !=, а может и вовсе не исправит, а просто проверку проигнорирует и выставит всегда истину.

Скомпилируйте код с #property strict, там ещё много чего править надо.

Если нужно проверить пересечение 2-х МА, то это не равенством проверяется, критерий должен быть вроде "если МА1(2)<MA(2) и MA1(1)>MA(1) - то вторая МА пересекла первую МА вверх на предыдущей свече". А равенство можно год ждать.

 И что такое while(true), по-вашему?

Далее:


while(true) - цикл, где подхватываю тренд:  

-если ордер пробивается по стопу (Time>0) я выставляю его на то же место где он был;

- а если дорастает до определенного уровня(NormalizeDouble(OrderOpenPrice()+TP*Point,Digits)<=NormalizeDouble(Ask,Digits)), то переходит в другой цикл (в котором условие - тип ордера), где происходит вычисления профита в пунктах и в зависимости от этого модифицируется.

 

Насчет условия  ""если МА1(2)<MA(2) и MA1(1)>MA(1) - то вторая МА пересекла первую МА вверх на предыдущей свече"" , цифры в скобках означают свечи? Вот мой вариант MA>Open[0] || MA<Open[0], пойдет?

#property strict прописал, исправил  ошибки.  

Изменил способ получения профита в пунктах теперь: полученную разницу между текущей ценой и ценой открытия я стал делить на Point(строка 217 и 271). 

Сделал преобразования типов в строках: 218, 272, 369. Верно?

Появились 2 ошибки:

possible use of uninitialized variable 'Prof' Test3.mq4 222 15

possible use of uninitialized variable 'Prof' Test3.mq4 275 15

Файлы:
test3_6.mq4  15 kb
 

Уважаемые знатоки...недавно начал познавать азы mql4...у меня к вам вопрос...допустим у меня есть основной индикатор и фильтры...если выполняется одно условие на основном инди, то с ним должны совпадать определенные условия с фильтров, если же на основном инди выполняется другое условие, то у фильтров должны выполняется другие условия...мне это нужно для открытия сделки...Могу ли я использовать в данной ситуации знак || или все же не могу...любой ответ прошу доступно пояснить, так как еще дуб дубом...С уважением! 

 
kempo102938:

Уважаемые знатоки...недавно начал познавать азы mql4...у меня к вам вопрос...допустим у меня есть основной индикатор и фильтры...если выполняется одно условие на основном инди, то с ним должны совпадать определенные условия с фильтров, если же на основном инди выполняется другое условие, то у фильтров должны выполняется другие условия...мне это нужно для открытия сделки...Могу ли я использовать в данной ситуации знак || или все же не могу...любой ответ прошу доступно пояснить, так как еще дуб дубом...С уважением! 

Определитесь. Вам нужен "И" или "ИЛИ". 
 
тааак....основной индикатор показывает столбики диаграммы 5 разных цветов (зеленый, синий, красный, оранжевый, серый). Сделка на продажу: Основной инди показывает серый столбик-->фильтры показывают свои сигналы-->открывается сделка. Если основной инди показывает оранжевый столбик-->фильтры показывают другие сигналы....и т д. Как мне правильно прописать в коде, чтобы сделки не повторялись, т к с каждой свечой цвет основного инди может прыгать "туда-сюда"...надеюсь объяснил доходчиво проблему...С уважением! 
 
CJIeCaPb:

while(true) - цикл, где подхватываю тренд: 

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

if(R==0)
{
 while(true)
 {
  Sleep(30000);
  Alert("Ошибка!");
 }
}

?

CJIeCaPb:

Насчет условия  ""если МА1(2)<MA(2) и MA1(1)>MA(1) - то вторая МА пересекла первую МА вверх на предыдущей свече"" , цифры в скобках означают свечи? Вот мой вариант MA>Open[0] || MA<Open[0], пойдет?

Да, в скобках номер свечи, для которой берётся зачение МА. Да, пойдёт и с ценой открытия.

CJIeCaPb:

Изменил способ получения профита в пунктах теперь: полученную разницу между текущей ценой и ценой открытия я стал делить на Point(строка 217 и 271). 

Сделал преобразования типов в строках: 218, 272, 369. Верно?

Для расчёта прибыли в пунктах вполне достаточно переменной Profit  (обьявить как целочисленный), остальные две - лишние:

 if(NormalizeDouble(Ask,Digits) <= NormalizeDouble(OrderOpenPrice(),Digits))
 {
  Profit = (int)((NormalizeDouble(OrderOpenPrice(),Digits)-NormalizeDouble(Ask,Digits))/Point);

  Profo = Profit/Point;
   Prof= (int)Profo;
 }
   
 if(OldProfit>Prof Profit )
  continue;
 else
  OldProfit=Prof Profit ; //ну и так далее, где профит считается

Ну и в кодобазе много тралов стоплосса есть, зачем лисапет изобретать, да ещё с прямоугольными колёсами???

Причина обращения: