Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
#include <Expert\Signal\SignalMA.mqh>
CSignalMA SignalMA;
int TickCount;
string Str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
TickCount=0;
SignalMA.Symbol(Symbol());
SignalMA.Period(PERIOD_H1);
SignalMA.Weight(0.5);
SignalMA.PeriodMA(20);
SignalMA.Shift(0);
SignalMA.Method(MODE_SMA);
SignalMA.Applied(PRICE_CLOSE);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
TickCount++;
Str = "LongCondition = " + IntegerToString(SignalMA.LongCondition())+"; "+IntegerToString(TickCount)+ "\n";
Str = Str + "ShortCondition = " + IntegerToString(SignalMA.ShortCondition())+"; "+IntegerToString(TickCount);
Comment(Str);
}
//+------------------------------------------------------------------+
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Período: é proibida a alteração do prazo
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Símbolo: a mudança de símbolo é proibida
Posso utilizar os módulos de sinais comerciais separadamente dos EAs do Wizard? Para fins de teste, escrevi
#include <Expert\Signal\SignalMA.mqh>
CSignalMA SignalMA;
int TickCount;
string Str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
TickCount=0;
SignalMA.Symbol(Symbol());
SignalMA.Period(PERIOD_H1);
SignalMA.Weight(0.5);
SignalMA.PeriodMA(20);
SignalMA.Shift(0);
SignalMA.Method(MODE_SMA);
SignalMA.Applied(PRICE_CLOSE);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
TickCount++;
Str = "LongCondition = " + IntegerToString(SignalMA.LongCondition())+"; "+IntegerToString(TickCount)+ "\n";
Str = Str + "ShortCondition = " + IntegerToString(SignalMA.ShortCondition())+"; "+IntegerToString(TickCount);
Comment(Str);
}
//+------------------------------------------------------------------+
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Período: é proibida a alteração do prazo
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Símbolo: a mudança de símbolo é proibida
O seguinte código:
RectLabel* GetLabel() { static bool initialized = false; static RectLabel label("rectlabel sample", 0, 0); if (!initialized) { Pos leftTop = {100, 100}; Rect rect(leftTop, 100, 50); label.Move(rect); label.SetBGColor(clrYellowGreen); label.SetTooltip(" -- Yuuuu! -- "); initialized = true; } return GetPointer(label); }Chama o construtor para etiqueta cada vez que a função é chamada.
Com o seguinte código: no primeiro caso o indicador está definido, no segundo caso não está (comutado com cortes).
A segunda opção desta biblioteca resulta 0. Todas as outras funções parecem funcionar.
Para o código seguinte: no primeiro caso o indicador está definido, no segundo caso não está (comutado com cortes).
Tanto quanto sei, neste momento todos os três parâmetros são obrigatórios.
Portanto, deve especificar o número da janela (variantes: 0 - janela principal, ChartIndicatorsTotal() - nova janela, 0 aChartIndicatorsTotal()-1 - uma janela existente).
Isso é o que não dá erros não é bom.
Para esta biblioteca para a segunda opção, as saídas 0. Todas as outras funções parecem funcionar.
Provavelmente antes de se obter a actualização do preço deve ser utilizado (pelo menos RefreshRates).
A variante certa deve ter este aspecto
Obrigado. Funcionou realmente com Bid, depois de especificar refresh.
Mas a saída do indicador, usando a biblioteca, requer 2 parâmetros, uma subjanela e uma pega. Caso contrário, diz que o número de parâmetros está errado, não consigo perceber, porque a biblioteca usa o mesmo ChartIndicatorAdd.
Obrigado. Trabalhou com Bid, depois de especificar refresh.
Mas a saída do indicador, usando a biblioteca, requer 2 parâmetros, uma subjanela e uma pega. Caso contrário, diz que o número de parâmetros está errado. Não consigo perceber, porque a biblioteca usa o mesmo ChartIndicatorAdd, por isso funciona directamente, mas a chamada através da biblioteca não.
A utilização da biblioteca requer 2 parâmetros. Mapa e subjanela.
Sem pega? E como é que o sistema saberá que mesa giratória utilizar? ... Até agora confiei no que está escrito :) O substrato e o cabo.
Sem pega? Como é que o sistema saberá qual o indicador a utilizar? Confiei nos textos até agora :) Subjanela e pega.
Sobre a biblioteca (da ajuda de classe)
IndicatorAdd
Adiciona um indicador com a asa especificada à janela do gráfico especificada.
Relativamente ao ChartIndicatorAdd direct work.
ChartIndicatorAdd
Adiciona um indicador com a asa especificada à janela do gráfico especificada.
Quanto à classe CChart.
A fim de evitar questões desnecessárias, tentamos seguir três regras básicas:
1. Olhamos para o código-fonte, se alguma coisa não estiver clara, referirmo-nos à documentação (o código-fonte dirá sempre a "verdade", mas a documentação também pode mentir);
2. Se a implementação do OOP é importante para nós, partimos da descrição de uma determinada classe e vamos até aos "implementadores directos". Se "trabalho real" é importante, o OOP deve ser estudado em último lugar (exame descendente/activo do código);
3. se depois de ler a documentação e as fontes algo não estiver claro, vá ao fórum.
Directamente sobre a implementação do método IndicatorAdd numa classe
Se olharmos para o código fonte, torna-se claro que o método fica subjanela e manuseamento (como referido na ajuda), e o terceiro parâmetro é retirado dos dados armazenados na própria classe (quero dizer o ID do gráfico).