qgmql: Onde posso encontrar https://docs.mql4.com/indicators/iama agora????
Está quebrado, eu enviei um bilhete para o balcão de atendimento . . . nesse meio tempo . .
iMA
Calcula o indicador de Média Móvel e retorna seu valor.
duplo iMA( cordasímbolo, // símbolo intprazo, // prazo intma_period, // período médio de MA intma_shift, // turno MA intma_method, // método de cálculo da média intpreço aplicado_preço aplicado, // preço aplicado intturno// turno );
Parâmetros
símbolo
[em] Nome do símbolo sobre os dados dos quais o indicador será calculado. NULL significa o símbolo atual.
cronograma
[em] Cronograma. Pode ser qualquer um dos valores de enumeração de ENUM_TIMEFRAMES. 0 significa o período de tempo atual do gráfico.
ma_period
[em] Período de cálculo da média.
ma_shift
[em] turno MA. Os indicadores de desvio de linha estão relacionados com o gráfico por período de tempo.
ma_método
[em] Método de Média Móvel. Pode ser qualquer um dos valores de enumeração ENUM_MA_METHOD.
preço_aplicado
[em] Preço aplicado. Pode ser qualquer um dos valores de enumeração ENUM_APPLIED_PRICE.
turno
[em] Índice do valor retirado do buffer de indicadores (deslocamento relativo à barra atual a quantidade indicada de períodos atrás).
Tentei muito obter o código para o recurso "LotsProgression" para minha EA, mas é confuso. Vocês podem destacar o código na fonte abaixo, que está escrito para a progressão de lotes? (e, por favor, digam também como destacar alguma parte do código fonte como aqui
externint expertId = 183547;
externint TakeProfit=40;
externint StopLoss=10;
externint BreakevenStop = 30;
externbool TimeEntry=true;
externstring StartTime="7:00";
externstring StopTime="17:00";
externbool PriceEntry=false;
externdouble Price=1.5500;
externbool FirstLong=false;
externstring LotsProgression="0.1;0.1;0.2;0.3;0.4;0.6;0.8;1.1;1.5;2.0;2.7;3.6;4.7;6.2;8.0;10.2;13.0;16.5;20.8;26.3;33.1;41.6;52.2;65.5;82.5;103.9;130.9;165;207.9;262;330.1;416;524.7;661.1";
externbool RestartNewCycle = true;
externint slippage=3; //slippage for market order processingexternint OrderTriesNumber=10; //to repeat sending orders when you receive an error or requoteexternstring EAName="PowerSM";
bool buysig,sellsig,cycleended;
int tries,long,short,co,plen,lord,mord,lpos;
double Lot,lots[],tlot,lop,lcp,lsl,ltp;
double lbid = -1;
int counter = 0;
int init()
{
int i,j,k;
string ls;
while (true) {
j=StringFind(LotsProgression,";",i);
if (j>0) {
ls=StringSubstr(LotsProgression,i,j-i);
i=j+1;
k++;
ArrayResize(lots,k);
lots[k-1]=StrToDouble(ls);
} else {
ls=StringSubstr(LotsProgression,i);
k++;
ArrayResize(lots,k);
lots[k-1]=StrToDouble(ls);
break;
}
}
plen=ArraySize(lots);
}
void start() {
//---- check for history and tradingif(Bars<100 || IsTradeAllowed()==false) return;
if (lbid == -1) lbid = Bid;
co=CalculateCurrentOrders();
if (co > 0) counter = 1;
CheckForSignals();
CheckForOpen();
DoBreakEven(BreakevenStop,0);
lbid = Bid;
}
int CalculateCurrentOrders() {
int ord; string c;
//----for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==expertId) {
ord++;
if (OrderType()==OP_BUY) {
mord=1;
if (OrderClosePrice()-OrderOpenPrice()>BreakevenStop*Point) tlot=MathAbs(tlot); else tlot=-MathAbs(tlot);
}
if (OrderType()==OP_SELL) {
mord=-1;
if (-OrderClosePrice()+OrderOpenPrice()>BreakevenStop*Point) tlot=MathAbs(tlot); else tlot=-MathAbs(tlot);
}
c=StringSubstr(OrderComment(),0,StringFind(OrderComment(),"_",0));
lpos=StrToInteger(c);
return(ord);
}
}
//---- return orders volumereturn(ord);
}
double GetLastTrade()
{
int ord; lord=0;
string c;
//----for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==expertId)
{
if (OrderType()==OP_BUY) lord=1;
if (OrderType()==OP_SELL) lord=-1;
c=StringSubstr(OrderComment(),0,StringFind(OrderComment(),"_",0));
lpos=StrToInteger(c);
lop = NormalizeDouble(OrderOpenPrice(), Digits);
lcp = NormalizeDouble(OrderClosePrice(), Digits);
lsl = NormalizeDouble(OrderStopLoss(), Digits);
ltp = NormalizeDouble(OrderTakeProfit(), Digits);
if (OrderProfit()>0)
return(OrderLots());
elsereturn(-OrderLots());
}
}
return(0);
}
bool IsEntryTime()
{
datetime tm0 = TimeCurrent();
datetime tm1 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + StartTime);
datetime tm2 = StrToTime(TimeToStr(tm0, TIME_DATE) + " " + StopTime);
bool isTm = false;
if (tm1 <= tm2)
isTm = isTm || (tm1 <= tm0 && tm0 < tm2);
else
isTm = isTm || (tm1 <= tm0 || tm0 < tm2);
return (isTm);
}
void CheckForSignals()
{
buysig = false;
sellsig = false;
if (co > 0) return;
if (TimeEntry)
{
bool cond = IsEntryTime();
if (!cond) return;
}
if (PriceEntry)
{
cond = ((Bid >= Price && lbid < Price) || (Bid <= Price && lbid > Price));
if (!cond) return;
}
double lastlot = GetLastTrade();
if (lastlot >= 0)
{
if (counter > 0)
{
if (!RestartNewCycle) return;
}
if (FirstLong)
buysig = true;
else
sellsig = true;
lpos = 0;
Lot = lots[0];
}
else
{
lpos++;
int BE = 0;
if (lord > 0 && lcp == lop+BE*Point) lpos--;
if (lord < 0 && lcp == lop-BE*Point) lpos--;
Lot = lots[lpos];
if (lord > 0)
sellsig = true;
elseif (lord < 0)
buysig = true;
}
}
void CheckForOpen() {
int res,tr,TP;
//---- sell conditionsif(sellsig && co==0) {
Print("sell open ",Lot," ",lpos);
res = OpenAtMarket(OP_SELL,Lot,TakeProfit,lpos);
if (res>0) { tlot=Lot; }
return;
}
//---- buy conditionsif(buysig && co==0) {
Print("buy open ",Lot," ",lpos);
res = OpenAtMarket(OP_BUY,Lot,TakeProfit,lpos);
if (res>0) { tlot=Lot; }
return;
}
}
int OpenAtMarket(int mode,double lot,int TP,int pos) {
int res,tr,col;
double openprice,sl,tp;
tries=0;
while (res<=0 && tries<OrderTriesNumber) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }
RefreshRates();
if (mode==OP_SELL) {
openprice=Bid;
if (StopLoss>0) sl=openprice+StopLoss*Point;
if (TP>0) tp=openprice-TP*Point;
col=Red;
} else {
openprice=Ask;
if (StopLoss>0) sl=openprice-StopLoss*Point;
if (TP>0) tp=openprice+TP*Point;
col=Blue;
}
res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,pos+"_"+EAName+"_"+expertId,expertId,0,col);
tries++;
}
Print("market order:: ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ",pos+"_"+EAName+"_"+expertId);
if (res<=0) Print("error opening order : ",ErrorDescription(GetLastError()));
return(res);
}
void DoBreakEven(int BP, int BE) {
bool bres;
for (int i = 0; i < OrdersTotal(); i++) {
if ( !OrderSelect (i, SELECT_BY_POS) ) continue;
if ( OrderSymbol() != Symbol() || OrderMagicNumber() != expertId ) continue;
if ( OrderType() == OP_BUY ) {
if (Bid<OrderOpenPrice()+BP*Point) continue;
if ( OrderOpenPrice()+BE*Point-OrderStopLoss()>Point/10) {
//Print(BP," ",BE," bestop");
bres=OrderModify (OrderTicket(), OrderOpenPrice(), OrderOpenPrice()+BE*Point, OrderTakeProfit(), 0, Black);
if (!bres) Print("Error Modifying BE BUY order : ",ErrorDescription(GetLastError()));
}
}
if ( OrderType() == OP_SELL ) {
if (Ask>OrderOpenPrice()-BP*Point) continue;
if ( OrderStopLoss()-(OrderOpenPrice()-BE*Point)>Point/10) {
//Print(BP," ",BE," bestop");
bres=OrderModify (OrderTicket(), OrderOpenPrice(), OrderOpenPrice()-BE*Point, OrderTakeProfit(), 0, Gold);
if (!bres) Print("Error Modifying BE SELL order : ",ErrorDescription(GetLastError()));
}
}
}
return;
}
/*
int FindPos(double ls) {
for (int i=0; i<plen; i++) {
if (NormalizeDouble(MathAbs(lots[i]-ls),3)<0.001) return(i);
}
return(-1);
}
*/
Não use o tickvalue por si só https://www.mql5.com/en/forum/133792/page3#512466
Incapaz de entender, o que você queria dizer,
Mesmo eu não entendi seu ponto de vista sobre o link que você compartilhou. Em meu código,
Você poderia modificá-lo, por favor? Assim eu poderia entendê-lo melhor.
@RaptorUK Desta vez...
Ambos funcionaram, sem erros. Estranho. Mas mesmo assim eu o modifiquei.
Onde posso encontrar https://docs.mql4.com/indicators/iama agora????
Está quebrado, eu enviei um bilhete para o balcão de atendimento . . . nesse meio tempo . .
iMA
Calcula o indicador de Média Móvel e retorna seu valor.
duplo iMA(
corda símbolo, // símbolo
int prazo, // prazo
int ma_period, // período médio de MA
int ma_shift, // turno MA
int ma_method, // método de cálculo da média
int preço aplicado_preço aplicado, // preço aplicado
int turno // turno
);
Parâmetros
símbolo
[em] Nome do símbolo sobre os dados dos quais o indicador será calculado. NULL significa o símbolo atual.
cronograma
[em] Cronograma. Pode ser qualquer um dos valores de enumeração de ENUM_TIMEFRAMES. 0 significa o período de tempo atual do gráfico.
ma_period
[em] Período de cálculo da média.
ma_shift
[em] turno MA. Os indicadores de desvio de linha estão relacionados com o gráfico por período de tempo.
ma_método
[em] Método de Média Móvel. Pode ser qualquer um dos valores de enumeração ENUM_MA_METHOD.
preço_aplicado
[em] Preço aplicado. Pode ser qualquer um dos valores de enumeração ENUM_APPLIED_PRICE.
turno
[em] Índice do valor retirado do buffer de indicadores (deslocamento relativo à barra atual a quantidade indicada de períodos atrás).
Valor retornado
Valor numérico do indicador de Média Móvel.
Exemplo:
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
Está quebrado, eu enviei um bilhete para o balcão de atendimento . . . nesse meio tempo . .
O que devo usar como especialista para começar a funcionar?
ou posso usar ambos no novo meta editor?
(acho que estou perguntando sobre uma coisa muito básica, mas na verdade tenho zero conhecimentos e estou interessado em aprendê-los).
O que devo usar como especialista para começar a funcionar?
ou posso usar ambos no novo meta editor?
(acho que estou perguntando sobre uma coisa muito básica, mas na verdade tenho zero conhecimentos e estou interessado em aprendê-los).
Tentei muito obter o código para o recurso "LotsProgression" para minha EA, mas é confuso. Vocês podem destacar o código na fonte abaixo, que está escrito para a progressão de lotes? (e, por favor, digam também como destacar alguma parte do código fonte como aqui
double lots[]Tentei muito obter o código para o recurso "LotsProgression" para minha EA, mas é confuso.
o que é confuso pode explicar o problema de ur
Penso que com esse #propriedade estrita você terá que inicializar que i,j,k a um valor...
int i=0,j=0,k=0;
PipPip...Jimdandy