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
Parece que nunca conseguiria a ajuda de ninguém, pessoal, por favor, respondam
Com uma quantidade moderada de trabalho de adivinhação, eu sugeriria que o problema é com o indicador, ou sua extensão a ele, e não seu uso do iCustom. Talvez seja melhor atribuir buffers 2 e 3 junto com os alertas? (Embora eu não conseguisse descobrir como/quando seus valores índice-zero ([0]) seriam atribuídos de qualquer forma).
Informações sobre os preços
Minhas saídas e entradas são baseadas em sinais que geram uma condição na abertura da próxima barra (entrada e saída), devo usar os preços abertos para indicadores e médias móveis? Sempre usei dados de fim de dia para o comércio de ações, então naturalmente é para isso que eu tenho gravitado. Qual é o consenso lá fora?
Só de pensar
como definir uma parada móvel no nível mínimo de parada dos pares, de modo que se o nível de parada estiver em 4 pip ou 25 pip, o sl slick fará efeito, dependendo do par.
Eu deveria dizer que como você usa a especificação do contrato para cada par.
Saúde
Beno
Indicador Sidus_Bago
Olá aumento,
Será que você pode me ajudar a codificar Sidus_Bago para ser um indicador MTF? Eu também acho este indicador muito bom.
O Sidus_Bago está aqui:
Indicador "Sidus System confirmation"?
Muito obrigado.
Alguém pode me ajudar com esta EA?
Olá a todos,
Tive uma tentativa na minha primeira EA, mas ela não se compila; recebo um erro "'fim do programa' - parêntese esquerda desequilibrada" e já passei por isso algumas vezes, mas não consigo encontrar o problema. Não se preocupe com a lógica da estratégia comercial (a menos que você esteja interessado), vou trabalhar nisso assim que ele compilar e correr...
Aparentemente não tenho permissão para anexar arquivos, lamento muito pelo corte e cola também.
Obrigado,
Rob,
Perth, Aus
//---------------
//+------------------------------------------------------------------+
//| Rob_Ea.mq4 |
//| Primos Rob Cousins |
//| |
//+------------------------------------------------------------------+
#propriedade copyright "Rob Cousins
#ligação de propriedade ""
#define MAGICMA 20090216
//---- parâmetros de entrada
Lotes duplos externos;
externo int Short_MA=5;
Exterior int Longa_MA=15;
duplo externo Stoch_Upper=70.0;
duplo Stoch_Lower=30.0;
duplo externo RSI_Upper=80.0;
duplo RSI_Lower=20.0; duplo RSI_Lower=20.0;
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
Indicação_da_corrente()
{
// Variáveis médias móveis
duplo MA_Short;
duplo MA_Long;
corrente de corda INDICADOR_MA_Corrente;
string Previous_MA_Indicator;
cadeia de caracteres MA_Indicador_MA;
// Variáveis estocásticas
Corrente de corda Indicador_de_Corrente;
string Previous_Stoch_Indicator;
string Stoch_Indicator; string Stoch_Indicator;
// Variáveis de RSI
corrente de corda_RSI_Indicador;
string Previous_RSI_Indicator;
string RSI_Indicator; string RSI_Indicator;
// --------------------------------------
// primeiro obtenha MAs e verifique se há uma Cruz MA
// --------------------------------------
MA_Short=iMA(NULL,0,Short_MA,0,1,PRICE_MEDIAN,0);
MA_Long=iMA(NULL,0,Long_MA,0,0,0,PRICE_MEDIAN,0);
if (MA_Short>MA_Long) Current_MA_Indicator="BUY";
if (MA_Short>MA_Long) Corrente_MA_Indicator="SELL";
// definir o valor anterior e atual usando o MA deslocado (o último '1' nas opções)
if (iMA(NULL,0,Short_MA,0,1,PRICE_MEDIAN,1)>iMA(NULL,0,Long_MA,0,0,0,PRICE_MEDIAN,1)) Previous_MA_Indicator="BUY";
if (iMA(NULL,0,Short_MA,0,1,PRICE_MEDIAN,1)<iMA(NULL,0,Long_MA,0,0,0,PRICE_MEDIAN,1)) Previous_MA_Indicator="SELL";
if ((Current_MA_Indicator=="BUY") && (Previous_MA_Indicator=="BUY")) MA_Indicator="BUY";
if ((Current_MA_Indicator=="SELL") && (Previous_MA_Indicator=="SELL")) MA_Indicator="SELL";
// ----------------------------
// Verificação do indicador estocástico
// ----------------------------
if(iStochastic(NULL,0,6,3,3,MODE_SMA,0,MODE_MAIN,0)>Stoch_Upper) Current_Stoch_Indicator="BUY";
if(iStoch_Stochastic(NULL,0,6,3,3,MODE_SMA,0,MODE_MAIN,0)<Stoch_Lower) Current_Stoch_Indicator="SELL";
if(iStoch_Indicator="VENDER") Previous_Stoch_Indicator="BUY";
if(iStoch_Indicator="COMPRAR"; if(iStoch_Próximo) Previous_Stoch_Indicator="SELL";
if ((Current_Stoch_Indicator=="BUY") && (Previous_Stoch_Indicator=="BUY")) Stoch_Indicator="BUY";
if ((Current_Stoch_Indicator=="SELL") && (Previous_Stoch_Indicator=="SELL")) Stoch_Indicator="SELL";
// ----------------------------
// Verificação do indicador RSI
// ----------------------------
if(iRSI(NULL,0,3,PRICE_CLOSE,0)>RSI_Upper) Current_RSI_Indicator="BUY";
if(iRSI(NULL,0,3,PRICE_CLOSE,0)<RSI_Lower) Corrente_RSI_Indicator="SELL";
if(iRSI(NULL,0,3,PRICE_CLOSE,1)>RSI_Upper) Previous_RSI_Indicator="BUY";
if(iRSI(NULL,0,3,PRICE_CLOSE,1)<RSI_Lower) Previous_RSI_Indicator="SELL";
if ((Current_RSI_Indicator=="BUY") && (Previous_RSI_Indicator=="BUY")) RSI_Indicator="BUY";
if ((Current_RSI_Indicator=="SELL") && (Previous_RSI_Indicator=="SELL")) RSI_Indicator="SELL";
//----------------------------------------
// Descubra se você está em uma situação de compra ou venda
//----------------------------------------
if((MA_Indicator=="BUY") && (Stoch_Indicator=="BUY") && (RSI_Indicator=="BUY") retorno("BUY");
if((MA_Indicator=="SELL") && (Stoch_Indicator=="SELL") && (RSI_Indicator=="SELL") return("SELL");
}
//+------------------------------------------------------------------+
//| Calcular posições abertas |
//+------------------------------------------------------------------+
string Current_Trade(string symbol)
{
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso)
{
retornar ("NENHUM");
pausa;
}
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) retorna("BUY");
if(OrderType()==OP_SELL) return("SELL");
}
}
}
//----------------------------------------------------------------------
// Se o sinal mudou de direção, a primeira coisa a fazer é Fechar
// o comércio aberto atual antes de abrir outro.
//-----------------------------------------------------------------------
void CloseTrade(símbolo de corda)
{
// duplo ma;
//---- go trading only for first tiks of new bar
// if(Volume[0]>1) voltar;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break; // não há negociações em aberto
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- verificar tipo de pedido
// deixando para o momento ambas as opções, caso eu queira fazer isso de maneira diferente
// por exemplo, ter uma cor diferente, ou o que quer que seja. Caso contrário, os dois comandos são os mesmos
// e você precisaria apenas de um. Exceto os diferentes preços, suponho... Doh!
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
intervalo;
}
}
//----
}
//-----------------------------------------------------------
// Abrir uma posição se é isso que as folhas de chá dizem
//------------------------------------------------------------
OpenTrade(símbolo de corda, tipo de corda) vazio
{
int res;
//---- condições de compra
if(Type=="BUY") OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "ROB EA TEST",MAGICMA,0,Blue);
//---- condições de venda
if(Type=="SELL") OrderSend(Symbol(),OP_SELLL,Lots,Bid,3,0,0, "ROB EA TEST",MAGICMA,0,Red);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
início nulo()
{
//----
//---- calcular pedidos em aberto pelo símbolo atual
//--- Se não há negócios abertos, então simplesmente abra um...
if(Current_Trade(Symbol())=="NONE") OpenTrade(Symbol(),Current_Indication());
// Mas se houver uma negociação aberta, precisamos fechá-la primeiro antes de abrir a nova negociação.
if ((Current_Trade(Symbol())=="BUY") && (Current_Indication()=="SELL")));
{
CloseTrade(Símbolo());
OpenTrade(Symbol(),Current_Indication());
}
if ((Current_Trade(Symbol())=="SELL") && (Current_Indication()=="BUY")));
{
CloseTrade(Símbolo());
OpenTrade(Symbol(),Current_Indication());
}
retornar;
}
lá você vai.........................................
OK, isso foi rápido! Muito obrigado. Qual foi o problema?
Rob.
Problema com a redação do arquivo
Estou programando e a EA usa arquivos para manter os resultados do comércio (perda, ganho) com valores de indicadores. Assim, quando a EA entra no comércio eu escrevo valores de indicadores e tempo, quando o comércio foi feito, para arquivar "sellOpenInd.tab":
Após esta operação, o arquivo inclui:
CCISDivPresent 22 69 0.000024 0.000046 0.000045 -0.000015 2002.05.07 13:00
CCISDivPresent 66 85 0.000064 0.000032 0.000037 -0.000033 2002.05.15 07:00
CCISDivPresent 77 90 0.000041 -0.000029 0.000008 -0.000020 2002.06.03 08:00
etc...
In next stage i open this file and look into history for dates of opened orders then i check results of this trades and write into file "sellResults.tab"+indicators values writen in previous stage(above) .And here problem occures, only one same trade is recorded:
Rule7 Rule6 Rule5 Rule4 Rule3 Rule2 Rule1 TradeOutcome
-0.000015 0.000045 0.000046 0.000024 69 22 CCISDivPresent win
-0.000015 0.000045 0.000046 0.000024 69 22 CCISDivPresent win
-0.000015 0.000045 0.000046 0.000024 69 22 CCISDivPresent win
etc..
Here is my code(i know is not looking nice ):
int dates=FileOpen("sellOpenInd.tab", FILE_CSV|FILE_READ,"\t");
if(dates>0){
for(k=0;k<=10;k++){ //i use for loop instead of while(!FileIsEnding(dates) ) because ea enters in infinite loop for unknown reasons
dates=FileOpen("sellOpenInd.tab", FILE_CSV|FILE_READ,"\t");
FileSeek(dates,filepos,SEEK_SET);
while (FileIsLineEnding(dates)==FALSE){filestr=FileReadString(dates)+"\t"+filestr;filepos=filepos+FileTell(dates);}
decodeFile(filestr);//calling function which decodes readed string line, then writing results to global varaiables filter7 ,filter6 etc.
Comment(filterS7);
for (i =OrdersHistoryTotal()-1; i>=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Currencies) {
if((OrderMagicNumber()==16381||OrderMagicNumber()==16383)&&OrderCloseTime()!=0){
historyDateTime=TimeToStr(OrderOpenTime());
OrderP=OrderProfit();
if(OrderP>0)orderresult="win";if(OrderP<=0)orderresult="loss";
if(filterS7==historyDateTime) {
testFline=filterS6+"\t"+filterS5+"\t"+filterS4+"\t"+filterS3+"\t"+filterS2+"\t"+filterS1+"\t"+filterS0+"\t"+orderresult;
results=FileOpen("sellResults.tab", FILE_READ|FILE_WRITE,"\t");
FileSeek(results,0,SEEK_END);
FileWrite(results,testFline);
testFline="";
filestr="";
}
}
}
}
if(!FileIsEnding(dates)){FileClose(dates);FileClose(results);filepos=0;break;
}
}
}
Cada passo em seu ciclo você abre o arquivo "sellOpenInd.tab" uma e outra vez.
Tente isto:
if(dates>0){
for(k=0;k<=10;k++){ //i use for loop instead of while(!FileIsEnding(dates) ) because ea enters in infinite loop for unknown reasons
FileSeek(dates,filepos,SEEK_SET);
while (FileIsLineEnding(dates)==FALSE){filestr=FileReadString(dates)+"\t"+filestr;filepos=filepos+FileTell(dates);}
decodeFile(filestr);//calling function which decodes readed string line, then writing results to global varaiables filter7 ,filter6 etc.
Comment(filterS7);
for (i =OrdersHistoryTotal()-1; i>=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Currencies) {
if((OrderMagicNumber()==16381||OrderMagicNumber()==16383)&&OrderCloseTime()!=0){
historyDateTime=TimeToStr(OrderOpenTime());
OrderP=OrderProfit();
if(OrderP>0)orderresult="win";if(OrderP<=0)orderresult="loss";
if(filterS7==historyDateTime) {
testFline=filterS6+"\t"+filterS5+"\t"+filterS4+"\t"+filterS3+"\t"+filterS2+"\t"+filterS1+"\t"+filterS0+"\t"+orderresult;
results=FileOpen("sellResults.tab", FILE_READ|FILE_WRITE,"\t");
FileSeek(results,0,SEEK_END);
FileWrite(results,testFline);
testFline="";
filestr="";
}
}
}
}
if(!FileIsEnding(dates)){FileClose(dates);FileClose(results);filepos=0;break;
}
}
}Oi Roger09 tentei isto antes e não ajudou. Parece que o ponteiro não está se movendo para a próxima linha, mas não sei por quê.
De qualquer forma, obrigado pela resposta.