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

 
i999i:

Спасибо за ответ , но я имел ввиду как узнать пробит ли текущий фрактал или нет до появления следующего фрактала

Ищете цену свежего фрактала (крутите колёсико мыши здесь на страничке расписано), далее уже узнаёте пробит ли этот фрактал и всё. У меня в профиле ссылки на экспа по Б.Вильямсу ПрофитЮнити. Писал сам. Сейчас торгую по обратным сигналам, в направлении возвращения цены к своему скользящему среднему.
 
xant:

rigonich,

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

Если допустим в терминале висит 5 советников на 5 разных парах, у каждого советника по 4 требующих записи переменных, значит нужно 20 глобальных переменным, при этом их надо называть как-то с помощью команды  Symbol(), чтобы не прописывать в советнике каждое название.

В общем это пока не для моих мозгов(( 

Если для Глобальных Переменных терминала мозгов не хватает, то про запись в файл вооче...

double Var1, Var2, Var3, Var4;  // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}

НО, всё когда-нибудь в первый раз. fSave_MineGV() распологаете внутри start(), а fGet_MineGV() внутри init().

Надеюсь разберётесь, и вместо Var1 и т.д. пропишите свои сохраняемые переменные.
 
xant:

rigonich,

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

Если допустим в терминале висит 5 советников на 5 разных парах, у каждого советника по 4 требующих записи переменных, значит нужно 20 глобальных переменным, при этом их надо называть как-то с помощью команды  Symbol(), чтобы не прописывать в советнике каждое название.

В общем это пока не для моих мозгов(( 

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

string         perem           ="peremEURUSD-1";
string         perem           ="peremEURUSD-2";
double         A;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
   {
   GlobalVariableSet(peremEURUSD-1,2.5);       //так создавать или присваивать новое значенние 
   A=GlobalVariableGet(peremEURUSD-1);         //так поучать значение
   if(GlobalVariableGet(peremEURUSD-1)==....)  //так проверять
   return(0);
}

//+------------------------------------------------------------------+

P.S. Предопределять переменные (для валютной пары) лучше один раз в инит.

 

 

rigonich,

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

TarasBY ,

спасибо, все понятно, попробую, думаю все получится. 

 
подскажите плиз...что за нафик.. в исходном виде (без PlaySound("alert.wav"); ) - работает. Но если добавить к любому звену кроме назначения флага еще и какое-то действие (сыграть музычку например)...то флаги печатаются 0000 а музыка играется во всю! подскажите где ошибка?
      if(Stoch_1>Stoch_2) flag1=1 ;  
      {Print (flag1,flag2,flag3,flag4);
      
      if(Stoch_1<Stoch_2 && flag1==1) flag2=1;
      {Print (flag1,flag2,flag3,flag4);
      
      if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) flag3=1; 
      {Print (flag1,flag2,flag3,flag4);PlaySound("alert.wav");
      
       if(Stoch_1<Stoch_2 && flag1==1 && flag2==1 &&  flag3==1) flag4=1;
              {Print (flag1,flag2,flag3,flag4);
       if(Stoch_1>Stoch_2 && flag1==1 && flag2==1 &&  flag3==1 && flag4==1) 
       {OrderSend (Symbol( ), OP_SELL,  0.01 ,Bid, 0, 0, 0, NULL, 450, 0, CLR_NONE);
        Print ("OUT");


 
flag1=0;
flag2=0;
flag3=0;
flag4=0;}

}}     
  }}}
=================================================================
.....
 
TarasBY:

Если для Глобальных Переменных терминала мозгов не хватает, то про запись в файл вооче...

НО, всё когда-нибудь в первый раз. fSave_MineGV() распологаете внутри start(), а fGet_MineGV() внутри init().

Надеюсь разберётесь, и вместо Var1 и т.д. пропишите свои сохраняемые переменные.

Интересный способ, я как то даже не думал, что можно использовать глобальные переменные таким образом,удобно, что не надо изменять код советника, только дополнить...
 
lottamer:
подскажите плиз...что за нафик.. в исходном виде (без PlaySound("alert.wav"); ) - работает. Но если добавить к любому звену кроме назначения флага еще и какое-то действие (сыграть музычку например)...то флаги печатаются 0000 а музыка играется во всю! подскажите где ошибка?

Везет компьютеру, он железный. Люди, если им надо выполнять условия, противоречащие друг другу сходят с ума. С вашими условиями музыка будет играть всегда.Вот уж точно   нафик.. в исходном виде.
 
rigonich:

Везет компьютеру, он железный. Люди, если им надо выполнять условия, противоречащие друг другу сходят с ума. С вашими условиями музыка будет играть всегда.Вот уж точно   нафик.. в исходном виде.

пожалуйста, покажите ошибку! то что она играет всегда я и так слышу..но не пойму где я ошибся?
 

Доброго дня! Помогите, пожалуста, разобрать ся с модификацией ордера, то-есть, с циклом отбора ордера для её условия. Я сперва нахожу ордер , сработавший по тейкпрофиту- это конкретный ордер с тикетом  tacket .  Так вот, примерно раз из десяти цикл не работает, о чём говорит конкретное расхождение зелёнойи синей линии в тестере. И визуализация- стоплосс иногда не движется. 

В общем, помогите, пожалуста!  

//***************************************   
 
 bool nahodka=false;
 
 for (i=0; i<=OrdersHistoryTotal(); i++) {
 if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
 if (OrderSymbol()!=Symbol())continue; 
 if (OrderMagicNumber() != 450) continue; 
 if (tacket==OrderTicket()) {
 if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;}}     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tucket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )<Bid-treylingstop*Point ){ Print ("втораямодифи    " );
 OrderModify(  tucket, OrderOpenPrice(), Bid-treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
 if (BUY == 0) {perenos=false;srabotka=false;nahodka=false;} 
 
 
 //*************************************** 
 
 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
 
rigonich:

Везет компьютеру, он железный. Люди, если им надо выполнять условия, противоречащие друг другу сходят с ума. С вашими условиями музыка будет играть всегда.Вот уж точно   нафик.. в исходном виде.
Моск у человека "перетёк" в пальцы, которые только и выстукивают "HELP!"...
Причина обращения: