Presumo que se a barra actual tiver um índice com o seu próprio tempo, então esta combinação nunca irá mudar. Ou será possível que como resultado da paginação histórica este índice seja atribuído a alguma barra histórica, e a barra actual obtenha um novo índice, maior pelo número de barras paginadas?
Também por outras palavras: é correcto compreender que a barra actual só se torna disponível (índice, preço e tempo) depois de uma troca de histórico completo e os seus parâmetros nunca mudam depois disso?
//--- заблокируем базу данных перед выполнением транзакцийDatabaseTransactionBegin(database);
int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
DatabaseReadBind(request, person)
id=person.ID;
Devolve um erro
Obter a última identificação
tente também isto, não consegue obter o número de filas
int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
id= DatabaseRead(request);
O que está errado, porque não posso obter um valor da consulta?
//--- открываем/создаем базу данных в общей папке терминаловint database=DatabaseOpen(filename+".sqlite", DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE | DATABASE_OPEN_COMMON);
if(database==INVALID_HANDLE)
{
Print("SaveStats: ", filename, " открываем/создаем базу данных в общей папке терминалов ", GetLastError());
return;
}
//--- заблокируем базу данных перед выполнением транзакцийDatabaseTransactionBegin(database);
int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
int id= DatabaseRead(request);
Se eu comparar a consulta com a base de dados, esta regressa como está
Certo
int id= DatabaseRead(request);
A base de dados é um bool , e a id é int
Como posso obter o resultado da consulta?
Funcionou. Criei uma classe extra sql
//--- заблокируем базу данных перед выполнением транзакцийDatabaseTransactionBegin(database);
int request=DatabasePrepare(database, "SELECT COUNT(*) FROM POSITION");
DatabaseReadBind(request,sql);
Como prolongar a linha para a direita? Mais longe do que a barra actual.
Existem coordenadas de tempo e preço. Compreendo o preço, mas como definir o tempo (tentei iTime(Symbol(), PERIOD_CURRENT, 0), mas o seu índice é zero)
Estou a escrever um indicador que desenha zonas com estilo de desenho DRAW_FILLING. Há vários outros indicadores, incluindo muitos muwings, no gráfico, para além da zona desenhada. Quando uma zona é desenhada, as linhas de outros indicadores mudam acentuadamente as suas cores.
A questão: Posso desenhar as zonas em MT5 de tal forma, que a sua cor não se sobreponha e não altere as cores das linhas de outros indicadores?
P.S. Cavei todas as propriedades dos amortecedores indicadores (métodos comoPlotIndexSetInteger), não há nada de semelhante.
Estou a escrever um indicador que desenha zonas com estilo de desenho DRAW_FILLING. Há vários outros indicadores, incluindo muitos muwings, no gráfico, para além da zona desenhada. Quando uma zona é desenhada, as linhas de outros indicadores mudam acentuadamente as suas cores.
A questão: podemos desenhar as zonas em MT5 de tal forma, que a sua cor não se sobreponha e não altere as cores das linhas de outros indicadores?
P.S. Cavei todas as propriedades dos amortecedores indicadores (métodos comoPlotIndexSetInteger), não há nada de semelhante.
P.S2. Aqui está uma captura de ecrã do MT5.
Tudo depende da sequência de sobreposição, quem é o último está no topo
Presumo que se a barra actual tiver um índice com o seu próprio tempo, então esta combinação nunca irá mudar.
Ou será possível que como resultado da paginação histórica este índice seja atribuído a alguma barra histórica, e a barra actual obtenha um novo índice, maior pelo número de barras paginadas?
Também por outras palavras:
é correcto compreender que a barra actual só se torna disponível (índice, preço e tempo) depois de uma troca de histórico completo e os seus parâmetros nunca mudam depois disso?
Por favor, diga-me como obter o número de filas numa tabela MySQL
Devolve um erro
Obter a última identificação
tente também isto, não consegue obter o número de filas
O que está errado, porque não posso obter um valor da consulta?
Se eu comparar a consulta com a base de dados, esta regressa como está
Certo
int id= DatabaseRead(request);A base de dados é um bool , e a id é int
Como posso obter o resultado da consulta?
Funcionou. Criei uma classe extra sql
Vários segundos decorrem entre a descarga do indicador e a chamada ao DeInit.
Porque é que existe uma pausa e pode ser evitada?
Estou a utilizar este bloco, retirado da documentação (tanto tp como sl)
//+------------------------------------------------------------------+
void Open_order_BUY()
{
double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),
ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- объявление и инициализация запроса и результата
MqlTradeRequest request={};
MqlTradeResult result={};
//--- параметры запроса
request.action =TRADE_ACTION_DEAL; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =0.01; // объем в 0.1 лот
request.type =ORDER_TYPE_BUY; // тип ордера
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия
request.sl =bid-SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // SL
request.tp =ask+TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // TP
request.deviation=5; // допустимое отклонение от цены
request.magic =EXPERT_MAGIC; // MagicNumber ордера
//--- отправка запроса
if(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки
//--- информация об операции
PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
//+------------------------------------------------------------------+
void Open_order_SELL()
{
double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),
ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- объявление и инициализация запроса и результата
MqlTradeRequest request={};
MqlTradeResult result={};
//--- параметры запроса
request.action =TRADE_ACTION_DEAL; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =0.01; // объем в 0.2 лот
request.type =ORDER_TYPE_SELL; // тип ордера
request.price =SymbolInfoDouble(Symbol(),SYMBOL_BID); // цена для открытия
request.sl =ask+SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // SL
request.tp =bid-TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // TP
request.deviation=5; // допустимое отклонение от цены
request.magic =EXPERT_MAGIC; // MagicNumber ордера
//--- отправка запроса
if(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки
//--- информация об операции
PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
Uma ordem abre-se em cada tic tac. Como posso corrigir para ter apenas uma encomenda aberta?
Estou a utilizar este bloco, retirado da documentação (tanto tp como sl)
//+------------------------------------------------------------------+
void Open_order_BUY()
{
double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),
ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- объявление и инициализация запроса и результата
MqlTradeRequest request={};
MqlTradeResult result={};
//--- параметры запроса
request.action =TRADE_ACTION_DEAL; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =0.01; // объем в 0.1 лот
request.type =ORDER_TYPE_BUY; // тип ордера
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия
request.sl =bid-SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // SL
request.tp =ask+TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // TP
request.deviation=5; // допустимое отклонение от цены
request.magic =EXPERT_MAGIC; // MagicNumber ордера
//--- отправка запроса
if(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки
//--- информация об операции
PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
//+------------------------------------------------------------------+
void Open_order_SELL()
{
double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),
ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- объявление и инициализация запроса и результата
MqlTradeRequest request={};
MqlTradeResult result={};
//--- параметры запроса
request.action =TRADE_ACTION_DEAL; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =0.01; // объем в 0.2 лот
request.type =ORDER_TYPE_SELL; // тип ордера
request.price =SymbolInfoDouble(Symbol(),SYMBOL_BID); // цена для открытия
request.sl =ask+SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // SL
request.tp =bid-TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT); // TP
request.deviation=5; // допустимое отклонение от цены
request.magic =EXPERT_MAGIC; // MagicNumber ордера
//--- отправка запроса
if(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки
//--- информация об операции
PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
Resolvido.
Como prolongar a linha para a direita? Mais longe do que a barra actual.
Existem coordenadas de tempo e preço. O preço é claro, mas como definir o tempo (tentei iTime(Symbol(), PERIOD_CURRENT, 0), mas o seu índice é zero)
Como prolongar a linha para a direita? Mais longe do que a barra actual.
Existem coordenadas de tempo e preço. Compreendo o preço, mas como definir o tempo (tentei iTime(Symbol(), PERIOD_CURRENT, 0), mas o seu índice é zero)
Boa tarde.
Aqui vai uma pergunta:
Estou a escrever um indicador que desenha zonas com estilo de desenho DRAW_FILLING. Há vários outros indicadores, incluindo muitos muwings, no gráfico, para além da zona desenhada. Quando uma zona é desenhada, as linhas de outros indicadores mudam acentuadamente as suas cores.
A questão: Posso desenhar as zonas em MT5 de tal forma, que a sua cor não se sobreponha e não altere as cores das linhas de outros indicadores?
P.S. Cavei todas as propriedades dos amortecedores indicadores (métodos como PlotIndexSetInteger), não há nada de semelhante.
P.S2. anexado é um screenshot do MT5.
Boa tarde.
Aqui vai uma pergunta:
Estou a escrever um indicador que desenha zonas com estilo de desenho DRAW_FILLING. Há vários outros indicadores, incluindo muitos muwings, no gráfico, para além da zona desenhada. Quando uma zona é desenhada, as linhas de outros indicadores mudam acentuadamente as suas cores.
A questão: podemos desenhar as zonas em MT5 de tal forma, que a sua cor não se sobreponha e não altere as cores das linhas de outros indicadores?
P.S. Cavei todas as propriedades dos amortecedores indicadores (métodos como PlotIndexSetInteger), não há nada de semelhante.
P.S2. Aqui está uma captura de ecrã do MT5.
Tudo depende da sequência de sobreposição, quem é o último está no topo
Definir buffer comDRAW_FILLING primeiro