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

 
Dimka-novitsek:
Я хотел в процессе тестирования, выводить даные в тесте визуализации.  Запускаю тест одного советника.  По ходу, перетягиваю на этот же график Другой советник,содержащий это самое  перетягиваю на график. И надписи коммента не вижу!  Советник улыбается..


Не получится так. Советник перетянутый на график визуального тестирования или вообще ничего не будет показывать, или будет показывать то, что на счете, а не в тестере (точно не знаю, как-то не хватало творческого потенциала, чтобы такое сотворить:) 

 

Вы знаете, не вижу надписи коммента на графике.

int start()
  { Comment("OrdersProfit  ",OrderProfit(),"AccountBalance  ",AccountBalance(),"Equity  ",AccountEquity());
//----
  double Itogo_Profit=Orderasthitaem();
  if (Itogo_Profit>ProfitSeriyniy){Pozuminusudalaem();}
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Integer:

Вадим, а вы пробовали применять ее? Нифига она не синхронизирует. Недавно игрался с ней. Очередь самому надо выстраивать. К сожалению., она всего лишь позволяет сократить код строчки на три. Ну или я чего-то не понимаю. 
Не пробовал. Сейчас попробую. Всё сейчас в DLL делаю. Там с этим проще.
 
Спасибо, Integer!!
 

Вижу. ВВел в init()
{
//----
Comment("OrdersProfit ",OrderProfit(),"AccountBalance ",AccountBalance(),"Equity ",AccountEquity());
//----
return(0);
}

 

В тестере таки ничего нету. Что ж... 

 

Dimka-novitsek:


Вижу. ВВел в init()
{
//----
Comment("OrdersProfit ",OrderProfit(),"AccountBalance ",AccountBalance(),"Equity ",AccountEquity());
//----
return(0);
}

 

В тестере таки ничего нету. Что ж... 


Может в советнике, в который это вставлено, еще есть функция вывода комментария?  Проверьте, скоро раз в советнике вызывается фцнкция Comment()

Чтобы выводить  OrderProfit(), ордер сначала надо выделить. 

Еще... какой смысл делать это в ините? Надо в start() делать. 

 
Integer:


Может в советнике, в который это вставлено, еще есть функция вывода комментария?  Проверьте, скоро раз в советнике вызывается фцнкция Comment(). 

Чтобы выводить  OrderProfit(), ордер сначала надо выделить. 

Еще... какой смысл делать это в ините? Надо в start() делать. 


 


В ините- я захотл увидеть, пишет ли моя фигня хоть что-нибудь, а тиков нету.    Я и продублировал эту строку в инит. А с  OrderProfit() да, это я лоханулся!!

 

Тут вообще загадка вырисовалась. Прикиньте!!!  4063    Ожидается параметр типа integer

тут-

OrderClose(  Orderasthitaem[i,0,1], Orderasthitaem[i,0,2], Bid, 5, 0) ; Error=GetLastError(); 

 Массив типа дубле. Тикет-точно целое число и тикет, но он получается дубле.  Как из функции дубле получать число интегер?

Извините мня, я не соображу вообще.  

 
Integer:

Вадим, а вы пробовали применять ее? Нифига она не синхронизирует. Недавно игрался с ней. Очередь самому надо выстраивать. К сожалению., она всего лишь позволяет сократить код строчки на три. Ну или я чего-то не понимаю. 

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

Это скрипт:

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  GlobalVariableDel(sName);
 }

void start()
 {
  while (!IsStopped())
   {// Начало блока синхронизации.
    GlobalVariableSetOnCondition(sName, hwndChart, 0);
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
    // Завершение блока синхронизации.
    Sleep(200);
   }
 }
На счёт сокращения, типа заменить другими функциями, то не получится. На то он и атомарный доступ. Только одна функция это может в MQL4.
Integer:
Т.е. просто применение этой функции позволяет обеспечить только чтобы в один момент времени работал один советник, но очередь не выстраивается, один сосветник может простоять, а другой два раза быть вызван.

Вроде бы нормально работает. Загрузил 6 скриптов с паузами 3000, 2000, 1000, 500, 300, 200. Вот часть лога:

19:58:36 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Start
19:58:37 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY End
19:58:37 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:39 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD End
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD End
19:58:39 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD End
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD End
19:58:43 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:45 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD End
19:58:45 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD End
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD End
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD End
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:47 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD End
19:58:47 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Start
19:58:48 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY End
19:58:48 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:50 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD End
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD End
19:58:50 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD End
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD End
19:58:54 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:56 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD End
19:58:56 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:57 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD End
19:58:57 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD End
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD End
19:59:00 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:59:01 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD End

 
Работает, в том смысле, что одна функция в один момент времени отрабатывается, но очередность не соблюдается.
 
Dimka-novitsek:


...Как из функции дубле получать число интегер?

int Int(double v){

return(v);

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