Подскажите, как передать функции одну размерность из двумерного массива?
что-то я запутался.
int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА
void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть string out_str="Result: "+inarray[i,0];
for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой" out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации } Print(out_str); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- Print("Call first:"); testfunc(testarray); Print("Call second:"); testfunc(testarray); //---- return(0); } //+-----------
Это опять я...Сильно уж не ругайте...Опыта по советникам у меня около двух недель...
Сделал трал в советнике по фракталам, а в журнале при тесте выдает ошибку OrderModify error 1, хотя лося исправно переносит по фракталам. Использовал функцию Кима FindNearFractal. Код следующий:
for(cnt=0;cnt<total;cnt++){OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);if(OrderType()<=OP_SELL&&// check for opened positionOrderSymbol()==Symbol())// check for symbol{if(OrderType()==OP_BUY)// long position is opened{// check for trailing stopif(TrailFractal){OrderModify(OrderTicket(),OrderOpenPrice(),FindNearFractal(NULL,0,MODE_LOWER),0,0,Green);return(0);}}else// go to short position{// check for trailing stopif(TrailFractal){OrderModify(OrderTicket(),OrderOpenPrice(),FindNearFractal(NULL,0,MODE_UPPER),0,0,Red);return(0);}}}
И по добавлениям еще вопрос. Код следующий:
for(int i =0; i <OrdersTotal(); i++){// выбор ордераif(OrderSelect(i, SELECT_BY_POS)==false)continue;// not current symbolif(OrderSymbol()!=Symbol())continue;}if(OrderType()==OP_SELL){//при профите >20 pips добавится или докупится ...if(OrderProfit()>20)//////если поставить другое условие открывает много позицийOrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl_sell,0,"Ma+Fr",16384,0,Red);
PeriodForSleep=((Time[0]-Time[1])-(TimeCurrent()-Time[0]))*1000;Sleep(PeriodForSleep);}if(OrderType()==OP_BUY){//при профите >20 pips добавится или докупится ...if(OrderProfit()>20)//////если поставить другое условие открывает много позицийOrderSend(Symbol(),OP_BUY,Lots,Ask,3,sl_buy,0,"Ma+Fr",16384,0,Lime);Sleep(PeriodForSleep);}
Если поставить в условие добавления вместо OrderProfit()>20 например пробой фрактала (или вообще любой другой сигнал), открывает много позиций. Попробовал добавить Sleep()-не помогает. В чем здесь проблема?
Подскажите, как передать функции одну размерность из двумерного массива?
что-то я запутался.
int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА
void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть
string out_str="Result: "+inarray[i,0];
for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой"
out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации
}
Print(out_str);
}
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Call first:");
testfunc(testarray);
Print("Call second:");
testfunc(testarray);
//----
return(0);
}
//+-----------
У меня две копии платформы одного брокера. В каждой свой Демо счет и общая папка experts.
Если я открываю первую, потом закрываю ее, затем открываю вторую то во второй необходимо поновой набрать пароль.
Закрываю вторую и открываю первую - теперь нужен пароль для первой. Так это и должно быть?
Спасибо!
high=iHigh(NULL,60,1); Или что-то не так?
Все правильно конечно. Но если нужно использовать несколько таймфреймов или инструментов, то нужно делать соотвествующую логику в советнике.
Все правильно конечно. Но если нужно использовать несколько таймфреймов или инструментов, то нужно делать соотвествующую логику в советнике.
Хорошо, буду разбираться. Спасибо!
Это опять я...Сильно уж не ругайте...Опыта по советникам у меня около двух недель...
Сделал трал в советнике по фракталам, а в журнале при тесте выдает ошибку OrderModify error 1, хотя лося исправно переносит по фракталам. Использовал функцию Кима FindNearFractal. Код следующий:
И по добавлениям еще вопрос. Код следующий: Если поставить в условие добавления вместо OrderProfit()>20 например пробой фрактала (или вообще любой другой сигнал), открывает много позиций. Попробовал добавить Sleep()-не помогает. В чем здесь проблема?обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..
обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..
Спасибо, keekkenen! Параметры разные. Ответ нашелся здесь. Совет (в ветке) забить на эту ошибку...NormalizeDouble тоже не помогает.
А что можете сказать по второй ошибке (по добавлениям)?
как в советники узнать сколько на данный момент бумажной прибыли, т.е прибыль по незакрытым позимциям?
У KimIV есть функция GetProfitOpenPosInPoint().
У KimIV есть функция GetProfitOpenPosInPoint().
а так можно,и будет ли так работать?
или правлилнее будет вставить код скрипта в советник?