[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 698

 
valenok2003:

копирайт
string copyright = "\xA9";
 
ToLik_SRGV:

благодарю
 
Сново возвращаюсь к вопросу заданному мной https://forum.mql4.com/ru/15972/page693 - тут, передача параметров между индикаторами и индикаторами - экспертами.  Предложенный вариант использования глобальных переменных конечно решает этот вопрос частично, но возник другой вопрос! Согласно описанию глобальных переменных  ......... GV-переменная может иметь только тип double, а как же тогда узнать эксперту при получении значения глобальной переменной, что переменная получена с определенного символа и определенного таймфрема ? 
 
Infinity:
Сново возвращаюсь к вопросу заданному мной https://forum.mql4.com/ru/15972/page693 - тут, передача параметров между индикаторами и индикаторами - экспертами. Предложенный вариант использования глобальных переменных конечно решает этот вопрос частично, но возник другой вопрос! Согласно описанию глобальных переменных ......... GV-переменная может иметь только тип double, а как же тогда узнать эксперту при получении значения глобальной переменной, что переменная получена с определенного символа и определенного таймфрема ?

Закодировать символы. Хотя можно использовать для этого и имена переменных, например EUSRUSD_H1_Var1
 
cyclik33:


Сделан в программе Горандо, с добавлением Вашего мартина.

//+------------------------------------------------------------------+
//| Copyright 2005, Gordago Software Corp. |
//| http://www.gordago.com/ |
//| version 2.0 |
//+------------------------------------------------------------------+




void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;

if (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lots_New = Lot;


if (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point;

if (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point;

int numorder = OrderSend(Symbol(), OP_BUY, Lots_New, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy);

if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}

void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;

if (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lots_New = Lot;

if (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point;

if (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point;

int numorder = OrderSend(Symbol(),OP_SELL, Lots_New, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);

if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}

У вас

void OpenBuy() {

double dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;

if (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))

Lots_New = Lot;

Является функцией и в самом начале этой функции вы присваиваете переменной Lots_New значение = Lot;

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

Я вам где сказал это записать? Во внешних переменных перед функцией старт...

И нормализуйте значение лота под корректный размер:

Lots_New = NormalizeLot(Lot*2, False, "");

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot(double lo, bool ro=False, string sy="") {
  double l, k;
  if (sy=="" || sy=="0") sy=Symbol();
  double ls=MarketInfo(sy, MODE_LOTSTEP);
  double ml=MarketInfo(sy, MODE_MINLOT);
  double mx=MarketInfo(sy, MODE_MAXLOT);

  if (ml==0) ml=0.1;
  if (mx==0) mx=100;

  if (ls>0) k=1/ls; else k=1/ml;
  if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;

  if (l<ml) l=ml;
  if (l>mx) l=mx;

  return(l);
}
 
Vinin:

Закодировать символы. Хотя можно использовать для этого и имена переменных, например EUSRUSD_H1_Var1


  точняк! спасибо! Но всеравно не ясно,... получается что мне в индикаторе необходимо будет прописыать все имена переменых, соответствующие всему количеству возможных символов. И если я захочу передать параметр из индикатора при наступлении определенного момента, мне придется писать в индикаторе код определения символа на котором в данный момент находитсся индикатор. А далее с помощью функции сравнения или других типа case определять в какую именно именную глобальную переменную записывать параметр!  Я все правильно понимаю! ?

 

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

Вопрос! с какими же тогда параметрами ( с жестким условием или с мягким условием) использовать образование патерна!   

 

Помогите решить проблему !


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

Проблема состоит в том - что что сигнал постоянно присутствует на закрытие ордера и его открытие. Поэтому у меня ордер закрывается у открывается снова, и так далее открывается и закрывается ... )))

Как решить эту проблему ? Га


 
Infinity:


точняк! спасибо! Но всеравно не ясно,... получается что мне в индикаторе необходимо будет прописыать все имена переменых, соответствующие всему количеству возможных символов. И если я захочу передать параметр из индикатора при наступлении определенного момента, мне придется писать в индикаторе код определения символа на котором в данный момент находитсся индикатор. А далее с помощью функции сравнения или других типа case определять в какую именно именную глобальную переменную записывать параметр! Я все правильно понимаю! ?

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

Вопрос! с какими же тогда параметрами ( с жестким условием или с мягким условием) использовать образование патерна!

С параметрами так можно поступать, но с паттернами. Надо же вначале с критериями определиться. Похож, не похож. А если похож, то насколько. Хотя бы насколько (процентов). В одном случае временная составляющая, в другом ценовая. Как их соотнести друг с другом. Хотя можно нейронку присобачить. Слой Кохонена с этим хорошо справляется
 

Помогите решить проблему !


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

Проблема состоит в том - что что сигнал постоянно присутствует на закрытие ордера и его открытие. Поэтому у меня ордер закрывается у открывается снова, и так далее открывается и закрывается ... )))

Как решить эту проблему ? Га
 
Necron:
Roger, спасибо, но неправильно работает все равно. Пробовал прикрутить другой трал, но ошибка все равно остается :( Отличается ли чем-нибудь трейлинг для одной позы и для нескольких одновременно?

Я понял, Вы определяете в начале функции переменную ро, но нигде ее не назначаете,т.е. она равна 0.
Причина обращения: