Ajuda em EA

 

Boa tarde, pessoal.

Primeiramente gostaria de dizer que não sou programador nem nada, apenas fico criando uns EAs nessas plataformas de criação de EAs que já dão os parâmetros.

Tava querendo um que quando o preço cruzasse a resistência seria uma venda e o suporte uma compra, porém a plataforma só disponibiliza a função para linhas de tendência. Quero trocar o código de linha de tendência pela linha horizontal.

Segue:

double TrendlinePriceUpper(int shift) //returns current price on the highest horizontal line or trendline found in the chart { int obj_total =ObjectsTotal(); double maxprice =-1; for(int i = obj_total -1; i >=0; i--) { string name =ObjectName(i); double price; if(ObjectType(name) == OBJ_HLINE&&StringSubstr(name, 0, 15) == "Horizontal Line" && (price =ObjectGet(name, OBJPROP_PRICE1)) > maxprice) maxprice = price; elseif(ObjectType(name) == OBJ_TREND&&StringSubstr(name, 0, 9) == "Trendline"&& (price =ObjectGetValueByShift(name, shift)) > maxprice) maxprice = price; } return(maxprice); //not found => -1 } double TrendlinePriceLower(int shift) //returns current price on the lowest horizontal line or trendline found in the chart { int obj_total =ObjectsTotal(); double minprice =MathPow(10, 308); for(int i = obj_total -1; i >=0; i--) { string name =ObjectName(i); double price; if(ObjectType(name) == OBJ_HLINE&&StringSubstr(name, 0, 15) == "Horizontal Line" && (price =ObjectGet(name, OBJPROP_PRICE1)) < minprice) minprice = price; elseif(ObjectType(name) == OBJ_TREND&&StringSubstr(name, 0, 9) == "Trendline"&& (price =ObjectGetValueByShift(name, shift)) < minprice) minprice = price; } if (minprice >MathPow(10, 307)) minprice =-1; //not found => -1 return(minprice); } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //initialize myPoint myPoint =Point(); if(Digits() == 5|| Digits() == 3) { myPoint *=10; MaxSlippage *=10; } //initialize LotDigits double LotStep =MarketInfo(Symbol(), MODE_LOTSTEP); if(LotStep >=1) LotDigits =0; elseif(LotStep >=0.1) LotDigits =1; elseif(LotStep >=0.01) LotDigits =2; else LotDigits =3; int i; //initialize crossed for (i = 0; i <ArraySize(crossed); i++) crossed[i] =true; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { int ticket =-1; double price; if(TrendlinePriceUpper(0) < 0 && TrendlinePriceLower(0) < 0) return; //Open Buy Order, instant signal is tested first RefreshRates(); if(Cross(0, Bid< TrendlinePriceLower(0)) //Price crosses below Lower Trendline ) { RefreshRates(); price =Ask; if(IsTradeAllowed()) { ticket = myOrderSend(OP_BUY, price, TradeSize, ""); if(ticket <=0) return; } else //not autotrading => only send alert myAlert("order", ""); } //Open Sell Order, instant signal is tested first RefreshRates(); if(Cross(1, Bid> TrendlinePriceUpper(0)) //Price crosses above Upper Trendline ) { RefreshRates(); price =Bid; if(IsTradeAllowed()) { ticket = myOrderSend(OP_SELL, price, TradeSize, ""); if(ticket <=0) return; } else //not autotrading => only send alert myAlert("order", ""); } } //+------------------------------------------------------------------+

 
RRamonFX:

Boa tarde, pessoal.

Primeiramente gostaria de dizer que não sou programador nem nada, apenas fico criando uns EAs nessas plataformas de criação de EAs que já dão os parâmetros.

Tava querendo um que quando o preço cruzasse a resistência seria uma venda e o suporte uma compra, porém a plataforma só disponibiliza a função para linhas de tendência. Quero trocar o código de linha de tendência pela linha horizontal.

Segue:

double TrendlinePriceUpper(int shift) //returns current price on the highest horizontal line or trendline found in the chart { int obj_total =ObjectsTotal(); double maxprice =-1; for(int i = obj_total -1; i >=0; i--) { string name =ObjectName(i); double price; if(ObjectType(name) ==OBJ_HLINE&&StringSubstr(name, 0, 15) == "Horizontal Line" && (price =ObjectGet(name, OBJPROP_PRICE1)) > maxprice) maxprice = price; elseif(ObjectType(name) == OBJ_TREND&&StringSubstr(name, 0, 9) == "Trendline"&& (price =ObjectGetValueByShift(name, shift)) > maxprice) maxprice = price; } return(maxprice); //not found => -1 } double TrendlinePriceLower(int shift) //returns current price on the lowest horizontal line or trendline found in the chart { int obj_total =ObjectsTotal(); double minprice =MathPow(10, 308); for(int i = obj_total -1; i >=0; i--) { string name =ObjectName(i); double price; if(ObjectType(name) == OBJ_HLINE&&StringSubstr(name, 0, 15) == "Horizontal Line" && (price =ObjectGet(name, OBJPROP_PRICE1)) < minprice) minprice = price; elseif(ObjectType(name) == OBJ_TREND&&StringSubstr(name, 0, 9) == "Trendline"&& (price =ObjectGetValueByShift(name, shift)) < minprice) minprice = price; } if (minprice >MathPow(10, 307)) minprice =-1; //not found => -1 return(minprice); } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //initialize myPoint myPoint =Point(); if(Digits() == 5|| Digits() == 3) { myPoint *=10; MaxSlippage *=10; } //initialize LotDigits double LotStep =MarketInfo(Symbol(), MODE_LOTSTEP); if(LotStep >=1) LotDigits =0; elseif(LotStep >=0.1) LotDigits =1; elseif(LotStep >=0.01) LotDigits =2; else LotDigits =3; int i; //initialize crossed for (i =0; i <ArraySize(crossed); i++) crossed[i] =true; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { int ticket =-1; double price; if(TrendlinePriceUpper(0) < 0 && TrendlinePriceLower(0) < 0) return; //Open Buy Order, instant signal is tested first RefreshRates(); if(Cross(0, Bid< TrendlinePriceLower(0)) //Price crosses below Lower Trendline ) { RefreshRates(); price =Ask; if(IsTradeAllowed()) { ticket = myOrderSend(OP_BUY, price, TradeSize, ""); if(ticket <=0) return; } else //not autotrading => only send alert myAlert("order", ""); } //Open Sell Order, instant signal is tested first RefreshRates(); if(Cross(1, Bid> TrendlinePriceUpper(0)) //Price crosses above Upper Trendline ) { RefreshRates(); price =Bid; if(IsTradeAllowed()) { ticket = myOrderSend(OP_SELL, price, TradeSize, ""); if(ticket <=0) return; } else //not autotrading => only send alert myAlert("order", ""); } } //+------------------------------------------------------------------+

Ramon, boa tarde,

Aqui é um fórum para desenvolvedores trocarem dicas, experiências e se ajudarem.

No seu caso você quer que alguém efetue um trabalho para você. Você deve procurar a parte de Freelancer. Eu não sou Freelancer mas muitos profissionais qualificados você encontrará lá e que poderão lhe ajudar por um valor justo.

Abraços.

 
Ruy Christian Hoffmann:

Ramon, boa tarde,

Aqui é um fórum para desenvolvedores trocarem dicas, experiências e se ajudarem.

No seu caso você quer que alguém efetue um trabalho para você. Você deve procurar a parte de Freelancer. Eu não sou Freelancer mas muitos profissionais qualificados você encontrará lá e que poderão lhe ajudar por um valor justo.

Abraços.

Não me atentei a essa questão. Obrigado pela dica, estou me direcionando para lá