ssn1: Estou acostumado ao meu próprio sistema de arquivamento.
Eu já sobrevivi com segurança com o Guardião: a destruição do disco rígido do meu PC, a falha do meu laptop. E eu não perdi um único byte do meu código. O Cofre é conveniente.
Eu escrevi um programa de exercícios. Não está funcionando por alguma razão.
Testei-o no testador de estratégia entre 29 de setembro e 15 de outubro.
O programa deveria funcionar assim: eu faço uma compra. Quando o preço cai para 0,010 ele deve vender com prejuízo.
Ocorre uma compra. Não há venda. Eu começo a visualizar e vejo que o preço não é apenas 0,010 mais baixo, mas muito mais alto. Estranho.
// -------- variáveis --- Início ----- duplo externo L1=0,01; // tamanho do lote para compra duplo externo L1n=0,01; // tamanho do lote para compra (lote normalizado) dobro externo AktualAsk=0,0; // preço atual da licitação duplo AktualBid externo=0,0; // preço de venda real int int int ticketlackmus=1; // indicador de abertura de ordem bem sucedida. bilhete int externo1=0; // bilhete int bool externo PozOtk1=verdadeiro; // -------- variáveis --- Fim ----- int init() { retorno(0); }
int start() { se (PozOtk1==verdadeiro) { // posição aberta ticketlackmus=1; enquanto (ticketlackmus>0) { Alerta (" Abrir primeira posição "); RefreshRates();// Atualização de dados AktualAsk=NormalizeDouble(Ask,Digits); // por preço L1n=NormalizeDouble(L1,2); // para o lote. ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, 0, CLR_NONE) se (ticket1>0) ticketlackmus=-1; { Alerta (" ORDEN OPEN ", ticket1, ", ticketlackmus); } } PozOtk1=falso; Alerta (" PozOtk1 ", PozOtk1); }
RefreshRates();// RefreshRates() AktualBid=NormalizeDouble(Bid,Digits); // por preço if (AktualBid<=AktualAsk-0.010 && PozOtk1===falso) { RefreshRates(); // Atualização de dados OrderSelect(ticket1, SELECT_BY_TICKET;) L1n=NormalizarDuplo(L1,2); // para o lote OrderClose (ticket1, L1n, AktualBid, 5); PozOtk1=verdadeiro; }
Se uma posição é aberta em um determinado símbolo (neste caso - "GBPUSD"), então é aconselhável levar todos os dados sobre este símbolo através do marketinfo, ou seja, não apenasAktualAsk=NormalizeDouble(Ask,Digits ); aktualAsk=MarketInfo("GBPUSD",MODE_ASK);
E assim, quaisquer dados de mercado devem ser tomados, a fim de evitar.
// -------- переменные --- Н -----externdouble L1=0.01; // размер лота для покупки externdouble L1n=0.01; // размер лота для покупки externdouble AktualAsk=0.0;
externdouble AktualBid=0.0;
externint ticketlackmus=1; // "лакмусовая бумажка" успешности откарытия ордераexternint ticket1=0; // тикет externbool PozOtk1=true;
// -------- переменные --- К ----- int init()
{
return(0);
}
int start()
{
if (PozOtk1==true)
{
// Открытие позиции
ticketlackmus=1;
while (ticketlackmus>0)
{
Alert (" Открытие первой позиции ");
RefreshRates(); // Обновление данных //AktualAsk=NormalizeDouble(Ask,Digits); //для цены
AktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
L1n=NormalizeDouble(L1,2); //для лота.
ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);
if (ticket1>0) ticketlackmus=-1;
{
Alert (" ОРДЕР ОТКРЫТ ", ticket1, " ", ticketlackmus);
}
}
PozOtk1=false;
Alert (" PozOtk1 ", PozOtk1);
}
RefreshRates(); // Обновление данных
AktualBid=NormalizeDouble(Bid,Digits); //для ценыif (AktualBid>=AktualAsk+0.010 && PozOtk1==false)
{
RefreshRates(); // Обновление данных OrderSelect(ticket1, SELECT_BY_TICKET);
L1n=NormalizeDouble(L1,2); //для лота
OrderClose (ticket1, L1n, AktualBid, 5);
PozOtk1=true;
}
return(0);
}
int deinit()
{
return(0);
}
evillive:
Se uma posição abre sobre um símbolo específico (neste caso - "GBPUSD"), então é aconselhável levar todos os dados também sobre este símbolo via marketinfo, ou seja, não apenasAktualAsk=NormalizeDouble(Ask,Digits);aktualAsk=MarketInfo("GBPUSD",MODE_ASK);
E assim, qualquer dado de mercado deve ser tomado, para evitar.
Obrigado Evillive!
Eu fiz mudanças. Mas eu já comecei a comprar. Nenhuma venda após as mudanças. Teste M15 de 30 de setembro de 2014 até meados de outubro.
Fez a mudança. Mas, de qualquer forma, a compra estava em andamento. Nenhuma venda após a mudança. Teste M15 de 30 de setembro de 2014 até meados de outubro.
Encontre onde no código acima pode haver uma venda
Estou acostumado ao meu próprio sistema de arquivamento.
Boa tarde.
Eu escrevi um programa de exercícios. Não está funcionando por alguma razão.
Testei-o no testador de estratégia entre 29 de setembro e 15 de outubro.
O programa deveria funcionar assim: eu faço uma compra. Quando o preço cai para 0,010 ele deve vender com prejuízo.
Ocorre uma compra. Não há venda. Eu começo a visualizar e vejo que o preço não é apenas 0,010 mais baixo, mas muito mais alto. Estranho.
// -------- variáveis --- Início -----
duplo externo L1=0,01; // tamanho do lote para compra
duplo externo L1n=0,01; // tamanho do lote para compra (lote normalizado)
dobro externo AktualAsk=0,0; // preço atual da licitação
duplo AktualBid externo=0,0; // preço de venda real
int int int ticketlackmus=1; // indicador de abertura de ordem bem sucedida.
bilhete int externo1=0; // bilhete int
bool externo PozOtk1=verdadeiro;
// -------- variáveis --- Fim -----
int init()
{
retorno(0);
}
int start()
{
se (PozOtk1==verdadeiro)
{
// posição aberta
ticketlackmus=1;
enquanto (ticketlackmus>0)
{
Alerta (" Abrir primeira posição ");
RefreshRates();// Atualização de dados
AktualAsk=NormalizeDouble(Ask,Digits); // por preço
L1n=NormalizeDouble(L1,2); // para o lote.
ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, 0, CLR_NONE)
se (ticket1>0) ticketlackmus=-1;
{
Alerta (" ORDEN OPEN ", ticket1, ", ticketlackmus);
}
}
PozOtk1=falso;
Alerta (" PozOtk1 ", PozOtk1);
}
RefreshRates();// RefreshRates()
AktualBid=NormalizeDouble(Bid,Digits); // por preço
if (AktualBid<=AktualAsk-0.010 && PozOtk1===falso)
{
RefreshRates(); // Atualização de dados
OrderSelect(ticket1, SELECT_BY_TICKET;)
L1n=NormalizarDuplo(L1,2); // para o lote
OrderClose (ticket1, L1n, AktualBid, 5);
PozOtk1=verdadeiro;
}
retorno(0);
}
int deinit()
{
retorno(0);
}
Ozero.
Favor usar o botão mágico SRC ao inserir o código:
Insira o código corretamente no fórum
Se uma posição é aberta em um determinado símbolo (neste caso - "GBPUSD"), então é aconselhável levar todos os dados sobre este símbolo através do marketinfo, ou seja, não apenas AktualAsk=NormalizeDouble(Ask,Digits ); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
E assim, quaisquer dados de mercado devem ser tomados, a fim de evitar.
Se uma posição abre sobre um símbolo específico (neste caso - "GBPUSD"), então é aconselhável levar todos os dados também sobre este símbolo via marketinfo, ou seja, não apenas AktualAsk=NormalizeDouble(Ask,Digits); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
E assim, qualquer dado de mercado deve ser tomado, para evitar.
Obrigado Evillive!
Eu fiz mudanças. Mas eu já comecei a comprar. Nenhuma venda após as mudanças. Teste M15 de 30 de setembro de 2014 até meados de outubro.
Obrigado, Evillive!
Fez a mudança. Mas, de qualquer forma, a compra estava em andamento. Nenhuma venda após a mudança. Teste M15 de 30 de setembro de 2014 até meados de outubro.
OrderClose (ticket1, L1n, AktualBid, 5);