Você parece ter recebido respostas completas e exemplos, mas ainda precisa ler a ajuda para entender como as funções são chamadas e porque o modificador estático é usado.
Aqui está outra maneira, talvez seja mais fácil para você entender:
int N(bool reset=false) // если вызываем N() то возвращает следующее значение n++, при первом вызове n=0, но вернет 1, т.к. n=0, а затем n++, если нужно 0 то
// или staticint n=-1; или вызывайте сначала N(true)
{ // если вызываем N(true), то сбрасываем n=0 и возвращзаем 0staticint n=0;
if(reset) n=0; else n++;
return n;
}
Você parece ter recebido respostas completas e exemplos, mas ainda precisa ler a ajuda para entender como as funções são chamadas e porque o modificador estático é usado.
Aqui está outra variante, talvez isto lhe facilite a compreensão:
O primeiro exemplo mostra uma chamada de função quando nenhuma posição é tomada e o resultado retornado é comparado.
if( ((OpenB-Ask)/ma+TimeB/60) > N() )
É por isso que provavelmente vale a pena voltar sem zerar e acrescentar. Que eu implementei em 2 variantes
//+------------------------------------------------------------------+//| elliotbutton.mq4 |//| Copyright 2018, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2018, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
ButtonCreate();
ButtonCreate(0,"ButtonMinor",0,10,60,50,50,CORNER_LEFT_UPPER,"(i)","Arial",12,clrBlack, C'236,233,216',clrNONE,false,false,false,false,0);
return(INIT_SUCCEEDED);
}
voidOnTick()
{
}
voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
if (ObjectGetInteger(0,"Button",OBJPROP_STATE,0)==true)
{
int x =(int)lparam;
int y =(int)dparam;
datetime dt =0;
double price =0;
int window=0;
if(ChartXYToTimePrice(0,x,y,window,dt,price))
{
PrintFormat("Window=%d X=%d Y=%d => Time=%s Price=%G",window,x,y,TimeToString(dt),price);
if(ChartTimePriceToXY(0,window,dt,price,x,y))
PrintFormat("Time=%s Price=%G => X=%d Y=%d",TimeToString(dt),price,x,y);
ChartRedraw(0);
}
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"i","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"ii","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"iii","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"iv","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"v","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
ObjectSetInteger(0,"Button",OBJPROP_STATE,False);
}
if (ObjectGetInteger(0,"ButtonMinor",OBJPROP_STATE,0)==true)
{
int x =(int)lparam;
int y =(int)dparam;
datetime dt =0;
double price =0;
int window=0;
if(ChartXYToTimePrice(0,x,y,window,dt,price))
{
PrintFormat("Window=%d X=%d Y=%d => Time=%s Price=%G",window,x,y,TimeToString(dt),price);
if(ChartTimePriceToXY(0,window,dt,price,x,y))
PrintFormat("Time=%s Price=%G => X=%d Y=%d",TimeToString(dt),price,x,y);
ChartRedraw(0);
}
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"(i)","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"(ii)","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"(iii)","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"(iv)","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
TextCreate(0,"Text "+string(MathRand()),0,dt,price,"(v)","Arial",10,clrBlack,0.0,ANCHOR_LEFT_UPPER,false,true,false,0);
ObjectSetInteger(0,"ButtonMinor",OBJPROP_STATE,False);
}
}
voidOnDeinit(constint reason)
{
ObjectDelete(0,"Button");
ObjectDelete(0,"ButtonMinor");
}
bool ButtonCreate(constlong chart_ID=0, // ID графика conststring name="Button", // имя кнопки constint sub_window=0, // номер подокна constint x=10, // координата по оси X constint y=10, // координата по оси Y constint width=50, // ширина кнопки constint height=50, // высота кнопки constENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки conststring text="i", // текст conststring font="Arial", // шрифт constint font_size=10, // размер шрифта constcolor clr=clrBlack, // цвет текста constcolor back_clr=C'236,233,216', // цвет фона constcolor border_clr=clrNONE, // цвет границы constbool state=false, // нажата/отжата constbool back=false, // на заднем плане constbool selection=false, // выделить для перемещений constbool hidden=false, // скрыт в списке объектов constlong z_order=0) // приоритет на нажатие мышью
{
ResetLastError();
if(ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
{
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
}
return(true);
}
bool TextCreate(constlong chart_ID=0, // ID графика conststring name="Text", // имя объекта constint sub_window=0, // номер подокна datetime time=0, // время точки привязки double price=0, // цена точки привязки conststring text="Text", // сам текст conststring font="Arial", // шрифт constint font_size=10, // размер шрифта constcolor clr=clrBlack, // цвет constdouble angle=0.0, // наклон текста constENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // способ привязки constbool back=false, // на заднем плане constbool selection=true, // выделить для перемещений constbool hidden=true, // скрыт в списке объектов constlong z_order=0) // приоритет на нажатие мышью
{
ResetLastError();
if(ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))
{
ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
}
return(true);
}
escrever um EA que, ao clicar no Botão, cria um Texto no local do gráfico, como mostrado pelo mouse. Agora meu Consultor Especialista cria Texto somente no lugar de Botão.
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.
Quem mais pode ajudar?)
Você parece ter recebido respostas completas e exemplos, mas ainda precisa ler a ajuda para entender como as funções são chamadas e porque o modificador estático é usado.
Aqui está outra maneira, talvez seja mais fácil para você entender:
Você parece ter recebido respostas completas e exemplos, mas ainda precisa ler a ajuda para entender como as funções são chamadas e porque o modificador estático é usado.
Aqui está outra variante, talvez isto lhe facilite a compreensão:
O primeiro exemplo mostra uma chamada de função quando nenhuma posição é tomada e o resultado retornado é comparado.
É por isso que provavelmente vale a pena voltar sem zerar e acrescentar. Que eu implementei em 2 variantes
escrever um EA que, ao clicar no Botão, cria um Texto no local do gráfico, como mostrado pelo mouse. Agora meu Consultor Especialista cria Texto somente no lugar de Botão.
Olá, como faço quando arrasto e solto manualmente um pedido pendente de compra, o outro pedido pendente de venda se moverá com ele?
Como posso amarrar um ao outro, para que quando eu mover um, ele mova os dois de uma só vez?
Por que spam?
Por que spam?
Escreva seus próprios carrapatos e coloque-os no testador de estratégia.
Saudações. Você pode me dizer qual é o problema e como resolvê-lo?
Troquei alguns castiçais na história para testes, para o 1º, 2º, 3º e 6º.
Ao testar, o segundo é processado, o terceiro é desenhado (sem processamento), e deixa de dar um erro parado por causa do Stop Out
Boa tarde
Tenho uma situação muito simples, mas estou tendo problemas para resolvê-la.
Por favor, diga-me o que estou fazendo de errado:
problema: não posso ligar o indicador personalizado(i-DRP...) ao consultor especializado (Teste DR) via iCustom
obrigado de antemão