[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 416
Você pode me dizer como passar uma dimensão de uma matriz bidimensional para uma função?
Estou confuso com alguma coisa.
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); } //+-----------
Sou eu novamente... Não me repreenda muito... Tenho cerca de duas semanas de experiência com EAs...
Criei meu Expert Advisor baseado em fractais, mas ele continua mostrando o erro OrderModify 1 em meu registro durante o teste, embora meu alce esteja se movendo corretamente baseado em fractais. Eu usei a função FindNearFractal da Kim. O código é o seguinte:
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);}}}
E em adições, outra pergunta. O código é o seguinte:
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);}
Se eu definir um avanço fractal (ou qualquer outro sinal) em vez de OrderProfit()>20 na condição de adição, ele abre muitas posições. Tentei acrescentar Sleep()- não ajuda. Qual é o problema aqui?
обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..
Obrigado, Keekkenen! Os parâmetros são diferentes. A resposta é encontrada aqui. O conselho (na linha) é pregar este erro...NormalizeDouble também não ajuda.
E o que você pode dizer sobre o segundo erro (em acréscimos)?
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Você pode me dizer como passar uma dimensão de uma matriz bidimensional para uma função?
Estou confuso com alguma coisa.
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);
}
//+-----------
Eu tenho duas cópias da mesma plataforma de corretagem. Cada um tem sua própria conta de demonstração e uma pasta compartilhada chamada experts.
Se eu abrir a primeira, depois fechá-la e depois abrir a segunda, preciso digitar a senha novamente na segunda.
Eu fecho a segunda e abro a primeira - agora preciso da senha para a primeira. É suposto ser assim?
Obrigado!
high=iHigh(NULL,60,1); Ou algo está errado?
Tudo está correto. Mas se você quiser usar vários períodos de tempo ou símbolos, você precisa fazer a lógica correspondente em sua EA.
Все правильно конечно. Но если нужно использовать несколько таймфреймов или инструментов, то нужно делать соотвествующую логику в советнике.
OK, vou dar uma olhada nisso. Obrigado!
Sou eu novamente... Não me repreenda muito... Tenho cerca de duas semanas de experiência com EAs...
Criei meu Expert Advisor baseado em fractais, mas ele continua mostrando o erro OrderModify 1 em meu registro durante o teste, embora meu alce esteja se movendo corretamente baseado em fractais. Eu usei a função FindNearFractal da Kim. O código é o seguinte:
E em adições, outra pergunta. O código é o seguinte: Se eu definir um avanço fractal (ou qualquer outro sinal) em vez de OrderProfit()>20 na condição de adição, ele abre muitas posições. Tentei acrescentar Sleep()- não ajuda. Qual é o problema aqui?OrderModify error 1 geralmente acontece quando os novos parâmetros correspondem exatamente aos da ordem.
обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..
Obrigado, Keekkenen! Os parâmetros são diferentes. A resposta é encontrada aqui. O conselho (na linha) é pregar este erro...NormalizeDouble também não ajuda.
E o que você pode dizer sobre o segundo erro (em acréscimos)?
como você descobre quanto lucro no papel, ou seja, lucro em posições não fechadas, está atualmente na EA?
KimIV tem a função GetProfitOpenPosInPoint().
У KimIV есть функция GetProfitOpenPosInPoint().
posso fazer assim, e será que vai funcionar?
ou seria melhor inserir o código do roteiro na EA?