[WARNING CLOSED!] Any newbie question, so as not to clutter up the forum. Professionals, don't go by. Can't go anywhere without you. - page 999
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hello. could you please tell me what to insert in the code of the EA to optimise the EMA period?
#property copyright "hasgkhlhjgg"
#property link "http://www.efefrWRF.com"
#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 316995
extern string sNameExpert = "DGJJFYGJD";
extern int nAccount =0;
extern double dBuyStopLossPoint = 0;
extern double dSellStopLossPoint = 0;
extern double dBuyTakeProfitPoint = 0;
extern double dSellTakeProfitPoint = 0;
extern double dBuyTrailingStopPoint = 0;
extern double dSellTrailingStopPoint = 0;
extern double dLots = 0.03;
extern int nSlippage = 4;
extern bool lFlagUseHourTrade = False;
extern inttern nFromHourTrade = 0;
extern intNToHourTrade = 23;
extern bool lFlagUseSound = True;
extern string sSoundFileName = "alert.wav";
extern color colorOpenBuy = Blue;
extern colorCloseBuy = Aqua;
extern colorOpenSell = Red;
extern colorCloseSell = Aqua;
void deinit() {
Comment(");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come yet!");
return(0);
}
}
if(Bars < 100){
Print("bars less than 100");
return(0);
}
if(nAccount > 0 && nAccount != AccountNumber()){
Comment("Trade on account : "+AccountNumber()+" FORBIDDEN!");
return(0);
}
if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) ||
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){
Print("StopLoss less than " + MIN_STOPLOSS_POINT);
return(0);
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) ||
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){
Print("TakeProfit less than " + MIN_TAKEPROFIT_POINT);
return(0);
}
double diMA0=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA1=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA2=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA3=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA4=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA5=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA6=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA7=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA8=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA9=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA10=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA11=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA12=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA13=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA14=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA15=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA16=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA17=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA18=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA19=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA20=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA21=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA22=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA23=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA24=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA25=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA26=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA27=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA28=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA29=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA30=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA31=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA32=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA33=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA34=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA35=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA36=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA37=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA38=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA39=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA40=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA41=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA42=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA43=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA44=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA45=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA46=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA47=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA48=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA49=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA50=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA51=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA52=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA53=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA54=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA55=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA56=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA57=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA58=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
double diMA59=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA60=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
double diMA61=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0);
double diMA62=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
double diMA63=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
if(AccountFreeMargin() < (1000*dLots)){
Print("We have no money. Free Margin = " + AccountFreeMargin());
return(0);
}
bool lFlagBuyOpen = false, lFlagSellOpen = false, lFlagBuyClose = false, lFlagSellClose = false;
lFlagBuyOpen = (diMA0>diMA1 && diMA2>diMA3 && diMA4>diMA5 && diMA6>diMA7 && diMA8>diMA9 && diMA10>diMA11 && diMA12>diMA13 && diMA14>diMA15 && diMA16>diMA17 && diMA18>diMA19 && diMA20>diMA21 && diMA22>diMA23 && diMA24>diMA25 && diMA26>diMA27 && diMA28>diMA29);
lFlagSellOpen = (diMA32<diMA33 && diMA34<diMA35 && diMA36<diMA37 && diMA38<diMA39 && diMA40<diMA41 && diMA42<diMA43 && diMA44<diMA45 && diMA46<diMA47 && diMA46<diMA47; and diMA46<diMA47 && diMA48<diMA49 && diMA50<diMA51 && diMA52<diMA53 && diMA54<diMA55 && diMA56<diMA57 && diMA58<diMA59 && diMA60<diMA61);
lFlagBuyClose = (diMA30<diMA31);
lFlagSellClose = (diMA62>diMA63);
if (!ExistPositions()){
if (lFlagBuyOpen){
OpenBuy();
{ return(0);
}
if (lFlagSellOpen){
OpenSell();
return(0);
}
}
if(ExistPositions()){
if(OrderType()==OP_BUY){
if(lFlagBuyClose){
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), Bid, nSlippage, colorCloseBuy);
if (flagCloseBuy && lFlagUseSound)
PlaySound(sSoundFileName);
return(0);
}
}
if(OrderType()==OP_SELL){
if(lFlagSellClose){
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell);
if (flagCloseSell && lFlagUseSound)
PlaySound(sSoundFileName);
return(0);
}
}
}
if (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true;
if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false;
if (OrderSymbol()==Symbol() && lMagic) {
if (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {
if (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {
if (OrderStopLoss()<Bid-dBuyTrailingStopPoint*Point)
ModifyStopLoss(Bid-dBuyTrailingStopPoint*Point);
}
}
if (OrderType()==OP_SELL) {
if (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point) {
if (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifyStopLoss(Ask+dSellTrailingStopPoint*Point);
}
}
}
}
}
}
return (0);
}
bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true;
if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false;
if (OrderSymbol()==Symbol() && lMagic) {
return(True);
}
}
}
return(false);
}
void ModifyStopLoss(double ldStopLoss) {
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE);
if (lFlagModify && lFlagUseSound)
PlaySound(sSoundFileName);
}
void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0;
if (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point;
if (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point;
int numorder = OrderSend(Symbol(), OP_BUY, dLots, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy);
if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}
void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0;
if (dSellStopLossPoint > 0)
dStopLoss = Ask+ dSellStopLossPoint*Point;
if (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point;
int numorder = OrderSend(Symbol(),OP_SELL, dLots, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);
if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}
I just want to use it on different pairs, but it is designed for EURUSD, so I can't manually adjust it, neither morally, nor physically
Good morning !
Could you please tell me how to output two calculated parameters from a function calculation ? If I understand correctly - the return() function returns only one parameter specified in its brackets.
I can output only TLvup. And I also want to use BezubMMA23up. But if I write so - return(TLup, BezUbMMA23up) or return(TLup; BezUbMMA23up), I get an error. The function is called as double TL-up=CalculateTL-up(a,Price1Cin);
How to call to use both TLup and BezUbMMA23up ? Or for calculation of parameter WithoutMMA23up I should separately write the given code again and output return( WithoutMMA23up) ?