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

 
alpha24:
Здравствуйте, Младен,

После долгого времени я прошу Вас, пожалуйста, закодируйте Bollinger Band на MA. То же самое, что и MA на индикаторе MA. в отдельном окне. Скользящую среднюю не обязательно визуализировать в окне индикатора. BB с десятичным отклонением (0.01), форма EMA или SMA. Сделайте пожалуйста как обычно.

Заранее спасибо

альфа24

Для этого не нужен новый индикатор

Используйте любой ma, который уже находится в отдельном окне, а затем просто перетащите полосы боллинджера в это подокно и выберите предыдущие данные индикатора в качестве ценового поля.

 
mladen:
альфа24

Вам не нужен новый индикатор для этого

Используйте любой ма ...

Да, сэр, но проблема в том, что нет опции для отклонения в десятичных цифрах, и еще в том, что если я пытаюсь использовать несколько индикаторов в одном окне, происходит путаница в предыдущих и первых данных. Поэтому, пожалуйста

 

Привет,

Я не уверен, что maillink.dll работает с билдом > 600.

Я пробовал использовать maillink.dll с gmx и googlemail и всегда получаю "-2"

от функции MailInit(string,int,string,string); обратно :-(

Я также пробовал xpMail.dll от codersguru, но она разбивает мой счет metatrader, кто-нибудь знает другую возможность отправить письмо от одного эксперта на два разных почтовых адреса?!

 
sunshineh:
Привет,

Я не уверен, что maillink.dll работает с билдом > 600.

Я пробовал maillink.dll с gmx и googlemail и всегда получаю "-2"

от функции MailInit(string,int,string,string); обратно :-(

Я также пробовал xpMail.dll от codersguru, но она рушит мой счет metatrader, кто-нибудь знает другую возможность отправить письмо от одного советника на два разных почтовых адреса?!

Проблема в строковых частях.

Старый metatrader 4 использовал ANSI строки. Они заменили их на строки Юникода. Строки Юникода используют 2 байта на символ, в то время как ANSI использует только 1 байт на символ. Поэтому у вас и возникают проблемы - dll получают строки, которые не могут быть ими прочитаны.

 

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

Файлы:
.........png  141 kb
.......png  30 kb
tro_bias_ez.ex4  12 kb
 
DMNIK:
Пожалуйста исправьте индикатор нужно поставить стрелку на место квадратиков.

DMNIK

Файл ex4 не может быть отредактирован и изменен

 

Спасибо за четкое объяснение!

Что должно получиться, если я изменю каждую строку на юникод, прежде чем вызывать функции из dll?

Есть ли уже функции для изменения ANSI на unicode и unicode на ANSI?

 

Или это не работает, потому что Unicode-строка находится в массиве!!!?

Еще вопрос:

Как я могу воспроизвести несколько разных

PlaySound-wav файлов подряд?

Я пробовал с Sleep() между ними, но это не работает :-(

 
sunshineh:
Или это не работает потому что Unicode-строка находится в массиве!!!?

Еще один вопрос:

Как я могу воспроизвести несколько различных

PlaySound-wav файлов в линию?

Я пробовал с Sleep() между, но это не работает :-(

sunshineh

Логически это одно и то же: массивы символов. За исключением того, что символ ANSI занимает 1 байт, а символ Unicode - 2 байта. Это сделано для того, чтобы охватить все различные языки мира (когда был придуман Unicode - к метатрейдеру отношения не имеет). Теперь, если dll ожидает ANSI, а получает строку Unicode, она будет интерпретировать ее неправильно (и наоборот). Если ваша dll использует dll, вы должны преобразовать новые строки в явный массив беззнаковых символов (используя StringToShortArray(), чтобы сделать его доступным для ANSI dll), а возврат должен быть преобразован в строку, используя CharArrayToString() (чтобы сделать его доступным для metatrader).

________________________

Что касается sleep : функция Sleep() отключена в индикаторах, она работает только в советниках. Так было всегда (это не новшество нового метатрейдера).

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

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

 

Проверка, были ли последние закрытые ордера прибыльными

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

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

У меня есть такой код (MT4):

for(int i=(OrdersHistoryTotal()-1);i>=0;i--);

{

OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==BUY)

{

//for buy order

if(OrderType()==OP_BUY && OrderProfit()>0) last=1;

if(OrderType()==OP_BUY && OrderProfit()<0) last=0;

}

}

for(int j=(OrdersHistoryTotal()-1);j>=0;j--);

{

OrderSelect(j, SELECT_BY_POS,MODE_HISTORY);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==SELL)

{

//for sell order

if(OrderType()==OP_SELL && OrderProfit()>0) last2=1;

if(OrderType()==OP_SELL && OrderProfit()<0) last2=0;

}

}

Но он у меня не работает.

Как мне его модифицировать?

Спасибо за помощь.

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