# help me with the code

Sell your applications via the Market. It is secure!
86
2014.01.02 20:33
.
86
2014.01.02 20:37

//+------------------------------------------------------------------+
//|                                                      stock K.mq4 |
//|                                                    mohsin mewati |
//|                                                                  |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
//----
//<snip>...begin of start()

//calculate Stochastic Fast %K
for (i =ArraySize(MyArray)-StochPeriod-1; i >= 0; i--)
{
ExtMapBuffer1[i] = CalculateStochOnArray(MyArray,i);
}

//<snip>...end of start()...
}

//calculates Stochastics fast %k. takes the array holding our values and current index we are iterating through
double CalculateStochOnArray(double TheArray[], int i)
{
double
SmallestBuffer[],       //buffer to hold the smallest value
LargestBuffer[],        //buffer to hold the largest value
StochFastK,             //Stochastic Fast %K
top,                    //holds top half of calculation
bottom;                 //holds bottom half of calculation

int
position=0;             //place in SmallestBuffer/Largestbuffer for our largest or smallest value

ArrayResize(SmallestBuffer, ArraySize(TheArray));              //size our array accordingly
ArrayResize(LargestBuffer, ArraySize(TheArray));

position = ArrayMinimum(TheArray, StochPeriod, i);          //find the smallest value that starts at index i and is of StochasticPeriod length
SmallestBuffer[i] = TheArray[position];

position = ArrayMaximum(TheArray, StochPeriod, i);          //find the largest value that starts at index i and is of StochasticPeriod length
LargestBuffer[i] = TheArray[position];

top = TheArray[i]-SmallestBuffer[i];                            //holds top half of StochFastK calculation
bottom = MathMax(0.0001, LargestBuffer[i] - SmallestBuffer[i]); //holds bottom half of StochFastK calculation. Use MathMax to prevent divide by zero errors

StochFastK = (top/bottom)*100;

return(StochFastK);
}

//----
return(0);
}
//+------------------------------------------------------------------+
86
2014.01.02 20:38
here is the errors
14236
2014.01.02 20:43
ExtMapBuffer1[i] = CalculateStochOnArray(MyArray,i);

RTFM, learn to code, define your array ExtMapBuffer. We're not going to code it FOR you. We are willing to HELP you when you post your attempt (using SRC) and the nature of your problem.

Next time EDIT your original post, don't repost

86
2014.01.03 12:46

Thank you for the reply and the valuable time u give me,accept my apologies regarding our previous conversation i have knowledge of C little that i learn in my college. this is not my code i already mentioned,

The main problem is I make an EA having 11 errors when compile having an strategy of opening buy and sell at a time and check for 20 pips gain and close order now i just want to use stochastic indicator with it .

lets say if stochtics is =>"75" or <="25" no order will open.

here is the code.

please if u help me please repost the whole code with corrections thanks.

//+------------------------------------------------------------------+
//|                                                 every tick20.mq4 |
//|                                                    mohsin mewati |
//|                                                                  |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

int init()
{
//----
int order_open_time_sell =0;//intiger to save sell open Time
bool err_close_all_orders =0;//bolean to save get last error for close all opened orders code

bool err_sell=0;
bool err_selection_sell=0;
bool sell_modified=0;
double mf_sell=0;

int err_modify_sell=0;
int sell_selection=0;
//----
return(0);
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

//----

int start()
{

bool err_sell;
int sell_ticket;
bool err_selection_sell;
int sell_selection;
bool srr_mf_sell;
bool err_mf_sell;
bool err_modify_sell;
bool err_trail_sell;

//coding starts

}//for loop end
while(err_sell=1){//for loop to place a sell order
sell_ticket = OrderSend(Symbol(),OP_SELL,1,Ask,3,Ask-20*Point,0,Red);//code to place a sell ,order placed without SL but with a TP of 20 pips
err_sell=GetLastError;//code to check either sell is placed or not?
}//for loop ends

//__________________________________________________________________________________________________________________________________

while(err_selection_buy="true"){// for loop start to selection of first executed order for further procedure
err_selection_buy=GetLastError;//code to check eithet order is selected or not
}//for loop ends
buy_open_price=OrderOpenPrice;//taking open price for the first selected order

while(err_selection_sell="true"){// for loop start to selection of second executed order for further procedure
sell_selection=OrderSelect("Sell_ticket",SELECT_BY_TICKET);//order select and stored in intiger
err_selection_sell=GetLastError;//code to check eithet order is selected or not
}//for loop ends
int sell_open_price=OrderOpenPrice;//taking open price for the second selected order

while("buy_trail=1"; "Sell_trail=1"){// while loop started to check if thow of them or one is true

while (err_mf_buy="true" &&  "err_mf_sell="true""){//while loop start to take price quote every time for buy and sell
err_mf_buy=GetLastError;//code to confirm the previous line of code executed?
double mf_sell=MarketInfo("GBPUSD",MODE_POINT);//code to store markeet info in integer mf_sell
err_mf_sell=GetLastError;//code to confirm the previous line of code executed?
}
while(err_trail_buy="true"){//if above condition true for loop started to start trailing on buy order.
OrderModify(buy_ticket,buy_open_price,+20*TrailingStop);//code to start trailig stop on buy for 5 pips since our buy is in 20 pips profit the trail start at 15 pips
err_trail_buy=GetLastError;//code to confirm the previous line of code executed?
}
while(err_modify_sell="true"){//if buy is in profit for 20 pips and trailing stop started on it i want my sell to modify for take profit for just 5 pips.
OrderModify("Sell_ticket", double stoploss,Order_Open_Price-5,"ORANGE" )//code to modify sell for tp just for 5 pips
err_modify_sell=GetLastError;//code to confirm the previous line of code executed?
buy_trail=1;//intiger use to remember that the buy was in profit and all the cooding associated with it was executed there is no need to check .
}
else if (mf_sell+20<="Sell_open_price" && "Sell_trail=0"){//another logical test to check if buy was not in 20 pips if our sell is in 20 pips profit if so then in the next for loop statrted
while(err_trail_sell="true"){//for loop start to modify sell for trail
OrderModify(sell_ticket),sell_open_price,-20*TrailingStop,);//code to modify sell for trailing as above mentioned for buy sell is also for 20 pips and if it is in 20 pips profit trailing start on 15 pips
err_trail_sell=GetLastError;//code to confirm the previous line of code executed?
}
while(err_modify_buy="true"){//if our sell is in 20 pips profit and trailing executed on it while loop start to modify buy for tp for just 5 pips
OrderModify(   buy_ticket, double OrderOpenPrice+5,  color arrow_color="blue")//code to modify buy for tp just 5 pips
err_modify_buy=GetLastError;//code to confirm the previous line of code executed?
sell_trail=1;//intiger use to remember that the sell was in profit and all the cooding associated with it was executed there is no need to check .
}

}

}

}
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}

every line of code have comments with it so its easy to understand the code.

86
2014.01.03 12:56

here is the meta quotes stochastic code having 0 errors when compile

//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 LightSeaGreen
#property indicator_color2 Red
//---- input parameters
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//---- buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int draw_begin1=0;
int draw_begin2=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
SetIndexBuffer(2, HighesBuffer);
SetIndexBuffer(3, LowesBuffer);
//---- indicator lines
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0, MainBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1, SignalBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="Sto("+KPeriod+","+DPeriod+","+Slowing+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"Signal");
//----
draw_begin1=KPeriod+Slowing;
draw_begin2=draw_begin1+DPeriod;
SetIndexDrawBegin(0,draw_begin1);
SetIndexDrawBegin(1,draw_begin2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int start()
{
int    i,k;
int    counted_bars=IndicatorCounted();
double price;
//----
if(Bars<=draw_begin2) return(0);
//---- initial zero
if(counted_bars<1)
{
for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0;
for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0;
}
//---- minimums counting
i=Bars-KPeriod;
if(counted_bars>KPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double min=1000000;
k=i+KPeriod-1;
while(k>=i)
{
price=Low[k];
if(min>price) min=price;
k--;
}
LowesBuffer[i]=min;
i--;
}
//---- maximums counting
i=Bars-KPeriod;
if(counted_bars>KPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double max=-1000000;
k=i+KPeriod-1;
while(k>=i)
{
price=High[k];
if(max<price) max=price;
k--;
}
HighesBuffer[i]=max;
i--;
}
//---- %K line
i=Bars-draw_begin1;
if(counted_bars>draw_begin1) i=Bars-counted_bars-1;
while(i>=0)
{
double sumlow=0.0;
double sumhigh=0.0;
for(k=(i+Slowing-1);k>=i;k--)
{
sumlow+=Close[k]-LowesBuffer[k];
sumhigh+=HighesBuffer[k]-LowesBuffer[k];
}
if(sumhigh==0.0) MainBuffer[i]=100.0;
else MainBuffer[i]=sumlow/sumhigh*100;
i--;
}
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
//---- signal line is simple movimg average
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MODE_SMA,i);
//----
return(0);
}
//+------------------------------------------------------------------+

just need to extract fast K value and store in intiger named (My_stockK)

Moderator
17994
2014.01.03 12:59
mohsin360:

Where is i declared ?

Where is MyArray declared ?

for (i =ArraySize(MyArray)-StochPeriod-1; i >= 0; i--)
86
2014.01.03 13:07

the above code i pick from mt4 indicators stochastic code,i just want to extract stochtics reading in intiger so i can use it in my EA

Moderator
17994
2014.01.03 13:23
mohsin360:

the above code i pick from mt4 indicators stochastic code,i just want to extract stochtics reading in intiger so i can use it in my EA

OK, so carry on.
14236
2014.01.03 13:40
mohsin360: just need to extract fast K value and store in intiger named (My_stockK)
The fast K (and D and slowing) come FROM the EA and you pass them to iStochastic - MQL4 Documentation
86
2014.01.03 14:25

Ok mt mistake i paste codes out of order

here i paste again so it can be easily understand

//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 LightSeaGreen
#property indicator_color2 Red
//---- input parameters
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//---- buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int draw_begin1=0;
int draw_begin2=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
SetIndexBuffer(2, HighesBuffer);
SetIndexBuffer(3, LowesBuffer);
//---- indicator lines
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0, MainBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1, SignalBuffer);
//---- name for DataWindow and indicator subwindow label
short_name="Sto("+KPeriod+","+DPeriod+","+Slowing+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"Signal");
//----
draw_begin1=KPeriod+Slowing;
draw_begin2=draw_begin1+DPeriod;
SetIndexDrawBegin(0,draw_begin1);
SetIndexDrawBegin(1,draw_begin2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int start()
{
int    i,k;
int    counted_bars=IndicatorCounted();
double price;
//----
if(Bars<=draw_begin2) return(0);
//---- initial zero
if(counted_bars<1)
{
for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0;
for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0;
}
//---- minimums counting
i=Bars-KPeriod;
if(counted_bars>KPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double min=1000000;
k=i+KPeriod-1;
while(k>=i)
{
price=Low[k];
if(min>price) min=price;
k--;
}
LowesBuffer[i]=min;
i--;
}
//---- maximums counting
i=Bars-KPeriod;
if(counted_bars>KPeriod) i=Bars-counted_bars-1;
while(i>=0)
{
double max=-1000000;
k=i+KPeriod-1;
while(k>=i)
{
price=High[k];
if(max<price) max=price;
k--;
}
HighesBuffer[i]=max;
i--;
}
//---- %K line
i=Bars-draw_begin1;
if(counted_bars>draw_begin1) i=Bars-counted_bars-1;
while(i>=0)
{
double sumlow=0.0;
double sumhigh=0.0;
for(k=(i+Slowing-1);k>=i;k--)
{
sumlow+=Close[k]-LowesBuffer[k];
sumhigh+=HighesBuffer[k]-LowesBuffer[k];
}
if(sumhigh==0.0) MainBuffer[i]=100.0;
else MainBuffer[i]=sumlow/sumhigh*100;
i--;
}
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
//---- signal line is simple movimg average
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MODE_SMA,i);
//----
return(0);
}
//+------------------------------------------------------------------+

here is the code from which i want to extract fast K in one intiger and D in another intiger.

/ /12345