Как кодировать? - страница 222

 

Спасибо Roger09

Originally Posted by ForExTyro

Я пытаюсь добавить код к советнику, который будет ограничивать количество сделок, которые он совершает в день, только двумя (2). Только ОДНА длинная сделка и ОДНА короткая сделка в день. Вот код, который у меня есть на данный момент, но при обратном тестировании он не работает.

Можете ли вы мне помочь?

Reply Posted by Roger09

Замените

datetime LongTrade=0;

datetime ShortTrade=0;

на

static datetime LongTrade=0;

static datetime ShortTrade=0;

Это оно?

Это оно!

СПАСИБО Roger09

 

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

Это хороший пример, как выглядит декомпилированный советник и Ind.

b.

 
Kalenzo:
Вот так! Наслаждайтесь!

Здравствуйте, Калензо,

Мне снова нужна ваша помощь, не могли бы вы закодировать для меня дополнительную

информацию, как вы делали раньше, я хотел бы поместить информацию о баре LSMA.

Когда бар LSMA Woodie Bar зеленый, он показывает слово LONG (зеленый цвет),

и когда бар Woodie красный, он показывает слово Short (красный цвет).

посмотрите прикрепленную картинку...

http://i98.photobucket.com/albums/l277/compobey/CCIinfo.jpg

С уважением,

compobey

 

Запрос о помощи

Привет всем

Я использую очень простую систему, которая делает около +100 пунктов в месяц.

Я хотел бы сделать из нее советника, но я очень новичок в кодировании и чувствую себя потерянным . Может быть, вы, ребята/женщины, поможете мне создать этот советник, и мы все сможем его использовать?

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

Спасибо

 

Калензо

Kalenzo:
Вот так! Наслаждайтесь!

Привет еще раз, Калензо,

Я наблюдал за инди, который вы исправили для меня.

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

Как вы можете видеть на картинке, есть места, где он должен быть Tomato или Red, но вместо этого получается DodgerBlue.

Правила были таковы;

Когда значение (на момент закрытия бара) >, чем предыдущее закрытие бара (идет вверх) =

DodgerBlue, когда значение < 0

Синий, когда значение > 0

Когда значение (на закрытии бара < предыдущего закрытия бара (идет вниз) =

Помидор, когда значение > 0

Красный, когда значение < 0

Я отметил красными стрелками места, где возникают ошибки.

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

Я постарался объяснить как можно лучше, но дайте мне знать, если вам нужна дополнительная информация.

Спасибо.

Файлы:
 
Klondyke:
Привет еще раз, Калензо,

Я наблюдал за инди, который вы исправили для меня.

В целом он работает нормально, но иногда он ставит неправильный цвет на линию.

Как вы можете видеть на рисунке, есть места, где он должен быть Tomato или Red, но вместо этого получается DodgerBlue.

Правила были таковы;

Когда значение (на момент закрытия бара) >, чем предыдущее закрытие бара (идет вверх) =

DodgerBlue, когда значение < 0

Синий, когда значение > 0

Когда значение (на закрытии бара < предыдущего закрытия бара (идет вниз) =

Помидор, когда значение > 0

Красный, когда значение < 0

Я отметил красными стрелками места, где возникают ошибки.

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

Я постарался объяснить как можно лучше, но дайте мне знать, если вам нужна дополнительная информация.

Спасибо.

Извините, я забыл файл.

Файлы:
 

как перейти к линейной метке?

Как мне перейти к метке линии в Metatrader 4

что-то вроде

if(a > b) goto fred

if(c > d) goto jim

:fred

сделайте еще немного кода здесь

:jim

сделайте немного кода здесь

Я получил ответ, но мне нужно немного больше разъяснений.

Вместо этого вы можете написать код в функциях. Что-то вроде этого:

if(a > b) ReturnValue = fred();

if(c > d) ReturnValue = jim();

int fred()

{

сделайте здесь еще немного кода

}

int jim()

{

выполните здесь некоторый код

}

что такое ReturnValue? это не функция, как мне ее написать?

 

В приведенном вами примере 'ReturnValue' - это просто переменная. Она могла бы называться как угодно, но тот, кто дал вам этот код, использовал 'ReturnValue'.

Честно говоря, такой формат не имеет особого смысла, если только вы не собираетесь действительно что-то делать со значением, возвращаемым двумя функциями. Вы не можете использовать концепцию goto, как это было в VB (или это был Basic - это было так давно, что я не могу вспомнить!).

Просто что-то вроде...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Тогда, что бы вы ни собирались сделать, когда программа перешла бы к использованию goto, вы вместо этого сделаете это в двух соответствующих функциях.

Надеюсь, это имеет какой-то смысл.

С уважением,

Lux

 
luxinterior:
В приведенном вами примере 'ReturnValue' - это просто переменная. Она могла бы называться как угодно, но тот, кто дал вам этот код, использовал 'ReturnValue'.

Честно говоря, этот формат не имеет особого смысла, если только вы не собираетесь действительно что-то делать со значением, возвращаемым двумя функциями. Вы не можете использовать концепцию goto, как это было в VB (или это был Basic - это было так давно, что я не могу вспомнить!).

Просто что-то вроде...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Тогда, что бы вы ни намеревались сделать, когда программа перешла бы к использованию goto, вы вместо этого сделаете это в двух соответствующих функциях.

Надеюсь, это имеет какой-то смысл.

С уважением,

Люкс

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

Так что в вашем примере

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

нужно больше, чем if do this, или if do that, потому что другое условие - изменились ли c и d раньше, чем a и b, если да, то делайте это и игнорируйте a и b. Вот почему я пытался перейти к строке, потому что я не могу заставить его выбирать с помощью if then else.

потому что в действительности у меня

if(a>b && c>d) // делаем покупку здесь

else

if(a>b && c<d) // делаем здесь покупку по закрытию

else

наоборот, делаем продажу или близкую продажу

но если c и d изменились первыми, до a и b, то игнорируйте вышеприведенный код и делайте вышеприведенные тесты на c и d вместо этого.

Извините, это ясно как грязь.

 

Работа с CSV-файлами - я схожу с ума

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

Я пишу советника, который работает с CSV-файлами.

Для тестирования я поместил свои CSV-файлы в следующую папку:

/tester/files

Вот только небольшая часть из моего советника:

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

В моем советнике я читаю CSV-файлы, а затем записываю некоторые целые числа.

Теперь, когда я провожу тест и читаю в журнале "Print"-сообщения, я часто получаю старые целые числа, которые больше не записаны в CSV-файлах!!!

Например:

Сначала написано 3, а мой советник работает и записывает в файл 0,

Я вижу только 3 в этом CSV-файле!!!

Когда я очищаю этот CSV-файл и помещаю новый CSV-файл с 3 в папку "/tester/files"-папка, я могу прочитать только 0 из тестового файла before!!!!. Но я не могу найти, где советник считывает 0!!!

Я схожу с ума!!!!!

Надеюсь, вы сможете понять мой вопрос и подсказать!!!