[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 80

 
drknn:
Может там значение заканчивается нулём и в процессе нормализации этот последний ноль просто отбрасывается? Отбрасывается потому, что запись 0,1 эквивалентна 0,10 и ноль лучше отбросить?

врядли, руками смотрел значения линии в точке последнего бара, нуля не было.. и в некоторых случаях значение именно преобразовывалось до 4-го знака, иногда и до 3-го. т.к. след цифра была >5
 
drknn:


не работает(( в строку возвращается корректное значение а в переменную полный шлак, то 3 цифры то 4 .

можно как то из строки корректно достать это значение?

 
NameLess:


не работает(( в строку возвращается корректное значение а в переменную полный шлак, то 3 цифры то 4 .

можно как то из строки корректно достать это значение?


Можно сделать dll-ку и округлять в ней. Мне приходилось такое делать для простого отбрасывания дробной части числа. Тут вот ещё что непонятно - код индикатора заточен под пятизнак? На этот вопрос пожалуй может ответить лишь разработчик. Ну или просто сделайте своего индюка.
 
drknn:

Можно сделать dll-ку и округлять в ней. Мне приходилось такое делать для простого отбрасывания дробной части числа. Тут вот ещё что непонятно - код индикатора заточен под пятизнак? На этот вопрос пожалуй может ответить лишь разработчик. Ну или просто сделайте своего индюка.

советник мой от и до. в принципе можно отмахнутсья от этой проблемы еслиб возвращалось хотяб стабильно 4 цифры, но иногда взвращает и 3, вообще не понятно из-за чего. посмотрел iMA там вроде всё норм с приведением. честно говоря не понимаю из-за чего такое получается. но затык есть. про длл-ку у мну нет вообще идей, сбросьте хоть линк что к чему, где почитать?
 
NameLess:

советник мой от и до. в принципе можно отмахнутсья от этой проблемы еслиб возвращалось хотяб стабильно 4 цифры, но иногда взвращает и 3, вообще не понятно из-за чего. посмотрел iMA там вроде всё норм с приведением. честно говоря не понимаю из-за чего такое получается. но затык есть. про длл-ку у мну нет вообще идей, сбросьте хоть линк что к чему, где почитать?


Уй, это уже проблема - нужно хотя бы поверхностно владеть хоть каким-то другим языком программирования, позволяющим делать длл-ки. Ну или попробовать на MQL4 вносить значение в строку и сделать функцию, которая из строки вытащит только икс символов. Например, цена = 1,25254130 - это значение было внесено в строку. Функция должна пройтись по 7-ми первым символам и вернуть именно их - то есть, 1,25254. Просто циклом набираем в новую строку это значение поциферно, как бусы нанизываем на нитку. Затем конвертируем в дубль и возвращаем из подпрограммы.

По поводу длл - посмотрите что-то вроде этого на данном форуме https://www.mql5.com/ru/forum/124088

 
drknn:


Уй, это уже проблема - нужно хотя бы поверхностно владеть хоть каким-то языком программирования. Ну или попробовать вносить значение в строку и сделать функцию, которая из строки вытащит только икс символов. Например, цена = 1,25254130 - это значение было внесено в строку. Функция должна пройтись по 7-ми первым символам и вернуть именно их - то есть, 1,25254. Просто циклом набираем в новую строку это значение поциферно, как бусы нанизываем на нитку. Затем конвертируем в дубль и возвращаем из подпрограммы.

По поводу длл - посмотрите что-то вроде этого на данном форуме https://www.mql5.com/ru/forum/124088


владею, не глубоко, но и не в хоть каком то языке)))) да метод знаком. спасибо за совет. с длл-ками просто никогда не сталкивался, т.к. профессионально не занимался программированием.

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

 

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

extern bool    BUY         = true;
extern int     Magic       = 0;
extern double  Lot         = 0.1;
extern int     takeprofit  = 0;
extern int     stoploss    = 0;
extern int     slippage    = 3; 
double SL,TP;
int init(){
    return(0);
  }
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }

return(0);
}
void OPENORDER(string ord)
{
int error;
 while (true)
 { error=true;
 if (ord=="Buy") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0){BUY = false;}
}
return;
}
Заранее благодарю.


 
nemo811:

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

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



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

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

Дайте, пожалуйста, пример. Я только учусь, и ещё не сталкивался с задачей установки флага. )
 
nemo811:

Дайте, пожалуйста, пример. Я только учусь, и ещё не сталкивался с задачей установки флага. )

флаг имеется в виду переменная логического типа) я сам не профи, просто говорю как я решил проблему, а свой код выкладывать бессмысленно, он не маленький и дольше будете разбираться в нём чем с нуля проникнетесь идеей)))
Причина обращения: