Unbalanced left parenthesis - страница 2

 
А чем тебе обработка ошибок не понравилась. Ее все равно надо будет делать.
 

И пробуй сложные выражения писать в виде, удобном для контроля. Например так

Dma=1000.0*(((High[iHighest(NULL,15,MODE_HIGH, 20,  1)]-Low[iLowest(NULL,15,MODE_LOW, 20,  1)])
            +(High[iHighest(NULL,15,MODE_HIGH, 40, 20)]-Low[iLowest(NULL,15,MODE_LOW, 40, 20)])
            +(High[iHighest(NULL,15,MODE_HIGH, 60, 40)]-Low[iLowest(NULL,15,MODE_LOW, 60, 40)])
            +(High[iHighest(NULL,15,MODE_HIGH, 80, 60)]-Low[iLowest(NULL,15,MODE_LOW, 80, 60)])
            +(High[iHighest(NULL,15,MODE_HIGH,100, 80)]-Low[iLowest(NULL,15,MODE_LOW,100, 80)])
            +(High[iHighest(NULL,15,MODE_HIGH,120,100)]-Low[iLowest(NULL,15,MODE_LOW,120,100)]))/6.0);
 

Если не успел получить ответы на последние вопросы, повтори их снова.

 

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

это сделать?

 
petrov74:

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

это сделать?

Все таки надо и самому как то искать ответы на вопросы. Поиск сразу же находит ответы: Комментарии
 

Я тут наваял большой эксперт с использованием оператора switch . Я его правильно использовал?

 
petrov74:

Я тут наваял большой эксперт с использованием оператора switch . Я его правильно использовал?


В целом правильно. Но не стоит повторять присвоение целого значения переменной А. До начала оператора switch переменная А уже должна иметь какое-то значение. В зависимости от этого значения управление в операторе switch передаётся на соответствующую метку. Например, если до switch переменная А равна 2, то в switch(А) управление будет передано на case 2: и дальше исполнятся строки до ближайшего break.

Ещё имеет смысл переприсвоить некоторой переменной значение повторяющихся вычислений (для наглядности и оптимизации). Например, в коде несколько раз выполняются одни и те же вычисления: iMA(NULL, 5,1,0,MODE_SMA,PRICE_HIGH,0). Имеет смысл где-то вначале указать MA_510_H = iMA(NULL, 5,1,0,MODE_SMA,PRICE_HIGH,0), и во всех строках, где указано это выражение, вместо этого выражения вставить переменную MA_510_H.

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

 
SK. писал (а):
petrov74:

Я тут наваял большой эксперт с использованием оператора switch . Я его правильно использовал?


В целом правильно. Но не стоит повторять присвоение целого значения переменной А. До начала оператора switch переменная А уже должна иметь какое-то значение. В зависимости от этого значения управление в операторе switch передаётся на соответствующую метку. Например, если до switch переменная А равна 2, то в switch(А) управление будет передано на case 2: и дальше исполнятся строки до ближайшего break.

Ещё имеет смысл переприсвоить некоторой переменной значение повторяющихся вычислений (для наглядности и оптимизации). Например, в коде несколько раз выполняются одни и те же вычисления: iMA(NULL, 5,1,0,MODE_SMA,PRICE_HIGH,0). Имеет смысл где-то вначале указать MA_510_H = iMA(NULL, 5,1,0,MODE_SMA,PRICE_HIGH,0), и во всех строках, где указано это выражение, вместо этого выражения вставить переменную MA_510_H.

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

Огромное спасибо,но если можно,покажите всё насчёт переменной А в тексте программы.Зараннее спасибо!
 
petrov74 писал (а):
Огромное спасибо,но если можно,покажите всё насчёт переменной А в тексте программы.Зараннее спасибо!


Тут особо показывать нечего..

После метки case 1: Вы непонятно зачем указываете А=1; после метки case 2: указываете А=2; и т.д. В этом нет никакого смысла. Значение переменной А должно быть вычислено ещё до того, как оно используется в качестве параметра в операторе switch(А). В зависимости от значения переменной А управление в операторе switch будет передано на ту метку case, кот. совпадает со значением переменной А. Если А равно 3, то управление передаётся на метку case 3:

Но если это событие (передача управления на метку) уже произошло, то значит переменная А уже имеет это значение. Напрример, если управление передано на метку case 3:, то это произошло в результате того, что ещё до начала оператора switch переменная А уже имела значение 3. Зачем же ещё раз писать А=3 ?

 

Ещё один вопрос.По какой-то причине МТ категорически не переваривает условие вида{(iMA(NULL,5,1,0,MODE_SMA,PRICE_HIGH,0)-iMA(NULL,5,1,0,MODE_SMA,PRICE_LOW,0))/iVolume(NULL, PERIOD_M5,0) } (выдаёт unsignificient).При этом условие вида{iVolume(NULL,PERIOD_M5, 0)/iVolume(NULL,PERIOD_M5,0)} он принимает,но с большим дополнительным

множителем(100* или 1000*).Почему?