Forum on trading, automated trading systems and testing trading strategies
When you post code please use the CODE button (Alt-S)!
Please edit your (original) post and use the CODE button (Alt-S)! (For large amounts of code, attach it.)
General rules and best pratices of the Forum. - General - MQL5 programming forum 2019.05.06
Messages Editor
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
Hey guys first time posting here, so I've found an indicator which i like that i wanted to use on my expert advisor. When i use the iCustom to bring the indicator onto the chart it works by using -
void OnTick()
{
int indicator = iCustom (_Symbol,_Period,"donchian_channels");
}
simple enough, however im stuck as to getting the values for the 3 bands, im not sure whether i should be using the copybuffer to give the arrays that are on the original script a value or...@?
completely hit a wall here guys so any help would be useful, been at this for a while and adding custom indicators is the final step to having what i need going, for referance the indicator that im using for the bands is here:
https://www.mql5.com/en/code/402
Its a great indicator and is exactly how the original indicator works. I really need help getting the values of the 3 bands, thanks guys!
Full Code Here for my MA's Macd etc
#property description "Operation Automation V1"
#include<Trade\Trade.mqh>
// Create an instance of CTrade
CTrade trade;
input int MA1=1;
input int MA3=3;
input int MA5=5;
input int MA8=8;
input int MA14=14;
input int MA30=30;
input int MA50=200;
input int MA100=100;
input int MA200=200;
void OnTick()
{
// Ask price
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
// Bid price
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
//Get Account Equity
double Balance=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
double Equity=AccountInfoDouble(ACCOUNT_EQUITY);
// Set Position Size Dynamically
double DynamicPositionSize=NormalizeDouble((Equity/15000),2);
//create an Array for several prices
MqlRates PriceInfo[];
ArraySetAsSeries (PriceInfo,true);
// Strings for Various Signals
string signal="";
string bias1h="";
double MA1Array[],MA3Array[],MA5Array[],MA8Array[],MA14Array[],MA30Array[],MA50Array[],MA100Array[],MA200Array[],PriceArray[];
int MacDDefinition = iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE);
int DonchianChannels = iCustom (_Symbol,_Period,"donchian_channels");
int MA1Definition = iMA (_Symbol,_Period,MA1,0,MODE_EMA,PRICE_CLOSE);
int MA3Definition = iMA (_Symbol,_Period,MA3,0,MODE_EMA,PRICE_CLOSE);
int MA5Definition = iMA (_Symbol,_Period,MA5,0,MODE_EMA,PRICE_CLOSE);
int MA8Definition = iMA (_Symbol,_Period,MA8,0,MODE_EMA,PRICE_CLOSE);
int MA14Definition = iMA (_Symbol,_Period,MA14,0,MODE_EMA,PRICE_CLOSE);
int MA30Definition = iMA (_Symbol,_Period,MA30,0,MODE_EMA,PRICE_CLOSE);
int MA50Definition = iMA (_Symbol,_Period,MA50,0,MODE_EMA,PRICE_CLOSE);
int MA100Definition = iMA (_Symbol,_Period,MA100,0,MODE_EMA,PRICE_CLOSE);
int MA200Definition = iMA (_Symbol,_Period,MA200,0,MODE_EMA,PRICE_CLOSE);
ArraySetAsSeries(PriceArray,true); // MACD
ArraySetAsSeries(MA1Array,true);
ArraySetAsSeries(MA3Array,true);
ArraySetAsSeries(MA5Array,true);
ArraySetAsSeries(MA8Array,true);
ArraySetAsSeries(MA14Array,true);
ArraySetAsSeries(MA30Array,true);
ArraySetAsSeries(MA50Array,true);
ArraySetAsSeries(MA100Array,true);
ArraySetAsSeries(MA200Array,true);
CopyBuffer(MacDDefinition,0,0,3,PriceArray); //MACD
CopyBuffer(MA1Definition,0,0,5,MA1Array);
CopyBuffer(MA3Definition,0,0,5,MA3Array);
CopyBuffer(MA5Definition,0,0,5,MA5Array);
CopyBuffer(MA8Definition,0,0,5,MA8Array);
CopyBuffer(MA14Definition,0,0,5,MA14Array);
CopyBuffer(MA30Definition,0,0,5,MA30Array);
CopyBuffer(MA50Definition,0,0,5,MA50Array);
CopyBuffer(MA100Definition,0,0,5,MA100Array);
CopyBuffer(MA200Definition,0,0,5,MA200Array);
double LastMacDValue=(PriceArray[1]);
double MacDV=(PriceArray[0]); //MACD
double MA1Value=MA1Array[0];
double MA3Value=MA3Array[0];
double MA5Value=MA5Array[0];
double MA8Value=MA8Array[0];
double MA14Value=MA14Array[0];
double MA30Value=MA30Array[0];
double MA50Value=MA50Array[0];
double MA100Value=MA100Array[0];
double MA200Value=MA200Array[0];
}