Как в скрипте/советнике проверить факт окончания расчета индикатора , который из них вызывается? Пока пришлось Sleep() поставить, а то пол дня потерял не понимаю, почему значения нулевые в буферах получаются...
Aleksey Vyazmikin: Как в скрипте/советнике проверить факт окончания расчета индикатора , который из них вызывается? Пока пришлось Sleep() поставить, а то пол дня потерял не понимаю, почему значения нулевые в буферах получаются...
Я пользуюсь таким циклом
int n = 0;
do
{
// Пытаемся получить нужное значение;if(значение не получено)
{
n++;
Sleep(100);
}
}
while(значение не получено && n < 7 && !IsStopped());
Спасибо. Я надеялся, что есть штатные средства для этого, просто не понятно, зачем буфера забивать нулями, а потом расчетные значения туда класть - выдавали бы ошибку копирования буфера и нормально было бы...
Спасибо. Я надеялся, что есть штатные средства для этого, просто не понятно, зачем буфера забивать нулями, а потом расчетные значения туда класть - выдавали бы ошибку копирования буфера и нормально было бы...
Штатные средства есть, я когда-то пытался разобраться, но безрезультатно. Даже не вспомню сейчас в каком разделе документации об этом есть. Что-то связано с синхронизацией, если правильно помню.
Добрый день, пишу индикатор на основе 5 полосных линий Боллинджера, в качестве заключительного этапа начал писать условия формирования паттерной по отношению к линиям индикатора, но при тестировании получается 2 варианта: либо алерт каким то образом сам себя закличивает, либо ничего не происходит. Вот фрагмент:
Подскажите, что тут можно исправить, если вообще есть что исправлять
intOnCalculate (constint rates_total, // размер входных таймсерий constint prev_calculated, // обработано баров на предыдущем вызове constdatetime& time[], // Timeconstdouble& open[], // Open constdouble& high[], // High constdouble& low[], // Low constdouble& close[], // Close constlong& tick_volume[], // Tick Volume constlong& volume[], // Real Volume constint& spread[]) // Spread
{
//---- //--- переменныеint pos; // позицияstaticdatetime prevtime = 0;
int shift1;
int shift2;
int shift3;
string pattern, period;
int setPattern = 0;
int alert = 0;
double O, O1, O2, C, C1, C2, L, L1, L2, H, H1, H2;
//----//---- //--- check for bars count - проверка колчества баровif(rates_total<ExtPlotBegin)
return(0);
//--- начало вычисленияif(prev_calculated>1) pos=prev_calculated-1;
else pos=0;
//--- главный циклfor(int i = pos ; i < rates_total;i++)
{
int shift = 0;
shift1 = shift + 1;
shift2 = shift + 2;
shift3 = shift + 3;
O = open[shift1];
O1 = open[shift2];
O2 = open[shift3];
H = high[shift1];
H1 = high[shift2];
H2 = high[shift3];
L = low[shift1];
L1 = low[shift2];
L2 = low[shift3];
C = close[shift1];
C1 = close[shift2];
C2 = close[shift3];
//--- middle line
ExtMLBuffer[i]=SimpleMA(i,ExtBandsPeriod,close);
//--- calculate and write down StdDev
ExtStdDevBuffer[i]=StdDev_Func(i,close,ExtMLBuffer,ExtBandsPeriod);
//--- upper line
ExtTLBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviations*ExtStdDevBuffer[i];
//--- mediumH line
ExtMDHBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviationsM*ExtStdDevBuffer[i];
//--- mediumL line
ExtMDLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviationsM*ExtStdDevBuffer[i];
//--- lower line
ExtBLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviations*ExtStdDevBuffer[i];
// Импульсная свеча от нижней границы Боллинджераif(((O <= H) && (H <= ExtMDLBuffer[i])) && ((L >= C) && (C <= ExtBLBuffer[i])))
{
Alert("Pin up!");
PlaySound ("UpperBandAlert.wav");
}
Sleep(5000);
}
//---- OnCalculate done. Return new prev_calculated. Расчет закончен, возврат к новым предыдущим барамreturn(rates_total);
}
//+-
Первая позиция объёмом =0.1, последняя =0.2, как получить объём последней позиции =0.2?
На хэдж счёте так:
double Lot_pos_b()
{
int total=0;
double lot=0;
for(int i=PositionsTotal()-1;i>=0;i--)
if(m_position.SelectByIndex(i)) // selects the position by index for further access to its propertiesif(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
lot=m_position.Volume();
}
//---return(lot);
}
На неттинг счёте, как лот получить? эта функция возвращает 0.3, вместо 0.2.
Прошу помощи в создании файла, а именно указании правильного места его хранения.
Дело в том, что я использую портативную версию MT5, и мне надо что б файл при инициализации в тестере создавался в папке MT5\MQL5\Files , а он зараза создается в MT5\Tester\Agent-127.0.0.1-3000\MQL5\Files
Как в скрипте/советнике проверить факт окончания расчета индикатора , который из них вызывается? Пока пришлось Sleep() поставить, а то пол дня потерял не понимаю, почему значения нулевые в буферах получаются...
Я пользуюсь таким циклом
Я пользуюсь таким циклом
Спасибо. Я надеялся, что есть штатные средства для этого, просто не понятно, зачем буфера забивать нулями, а потом расчетные значения туда класть - выдавали бы ошибку копирования буфера и нормально было бы...
Спасибо. Я надеялся, что есть штатные средства для этого, просто не понятно, зачем буфера забивать нулями, а потом расчетные значения туда класть - выдавали бы ошибку копирования буфера и нормально было бы...
Штатные средства есть, я когда-то пытался разобраться, но безрезультатно. Даже не вспомню сейчас в каком разделе документации об этом есть. Что-то связано с синхронизацией, если правильно помню.
Добрый день, пишу индикатор на основе 5 полосных линий Боллинджера, в качестве заключительного этапа начал писать условия формирования паттерной по отношению к линиям индикатора, но при тестировании получается 2 варианта: либо алерт каким то образом сам себя закличивает, либо ничего не происходит. Вот фрагмент:
Подскажите, что тут можно исправить, если вообще есть что исправлять
Здравствуйте.
Первая позиция объёмом =0.1, последняя =0.2, как получить объём последней позиции =0.2?
На хэдж счёте так:
На неттинг счёте, как лот получить? эта функция возвращает 0.3, вместо 0.2.Здравствуйте.
Первая позиция объёмом =0.1, последняя =0.2, как получить объём последней позиции =0.2?
На хэдж счёте так:
На неттинг счёте, как лот получить? эта функция возвращает 0.3, вместо 0.2.Просматривать сделки, принадлежащие позиции и смотреть их объём.
Просто распринтуйте все найденные сделки позиции (свойства каждой) - там и сообразите что нужно для поиска.
Просматривать сделки, принадлежащие позиции и смотреть их объём.
Просто распринтуйте все найденные сделки позиции (свойства каждой) - там и сообразите что нужно для поиска.
Спасибо.
Прошу помощи в создании файла, а именно указании правильного места его хранения.
Дело в том, что я использую портативную версию MT5, и мне надо что б файл при инициализации в тестере создавался в папке MT5\MQL5\Files , а он зараза создается в MT5\Tester\Agent-127.0.0.1-3000\MQL5\Files