Preciso de ajuda para montar minha primeira EA

 
Boa Noite montei a seguinte EA
#include <Trade\Trade.mqh>
CTrade trade;

input int MediaHihg=10;
input int MediaLow=10;   

    void OnTick()
    {
     //calculando o preço de Compra
     double Ask=NormalizeDouble (SymbolInfoDouble (_Symbol, SYMBOL_ASK), _Digits);

     //calculando o preço de Venda
     double Bid=NormalizeDouble (SymbolInfoDouble (_Symbol, SYMBOL_BID), _Digits);
     
     //criando variavel para o preço
     MqlRates PriceInfo[];
     int PriceData = CopyRates (_Symbol, _Period, 0, 3, PriceInfo);
     
         //Criando um String Sinal
         string signal="";
         
         //Criando Array Media movel 
         double MediaHihgArray[];double MediaLowgArray[];
         
         //Definindo configurações da MediaHih
         int MediaHihgDefinition = iMA (_Symbol, _Period, MediaHihg, 1, MODE_EMA, PRICE_HIGH);
         
         //Definindo configurações da MediaLow
         int MediaLowDefinition = iMA (_Symbol, _Period, MediaLow, 1, MODE_EMA, PRICE_LOW);
         
         // Definindo EA
         CopyBuffer (MediaHihgDefinition, 0, 0, 3, MediaHihgArray) ;
         
         // Definindo EA
         CopyBuffer (MediaLowDefinition, 0, 0, 3, MediaLowgArray) ;
         
         // Se o preço acima da media movel
         if (PriceInfo[0] .close > MediaHihgArray[0])
         
         // Se o preço abaixo da media movel
         if (PriceInfo[0].close > MediaLowgArray[0])
         {
             signal="buy";
         }
         // Se o preço abaixo da media movel
         if (PriceInfo[0] .close < MediaHihgArray[0])
         
         // Se o preço acima da media movel
         if (PriceInfo[0].close < MediaLowgArray[0])
         {
             signal="sell";
         }           
     
         //buy 0.01 lote
         if (signal=="buy" && PositionsTotal()<1 )
             trade.Buy (0.01, NULL, Ask,0,(Ask+150 * _Point),NULL);
         
         //sell 0.01 lote    
         if (signal=="sell" && PositionsTotal()<1)
             trade.Buy (0.01, NULL, Bid,0,(Bid+150 * _Point),NULL);   
             
         //Saida do grafico
         Comment ("The signal is now: ",signal);  
         
        }  
       
Onde gostaria que efetuasse uma venda quando o preço estive acima tanto da media de 10 período calculada pela máxima e minima, e quando o sinal invertesse o preço de fechamento estivesse abaixo das duas media saísse da posição comprada e revertesse para a vendida e vice e versa, mas utilizando o parâmetro PositionsTotal não realiza estas operações e não sei que parâmetro utilizar.
 
Avelino Guimarães:
Boa Noite montei a seguinte EA Onde gostaria que efetuasse uma venda quando o preço estive acima tanto da media de 10 período calculada pela máxima e minima, e quando o sinal invertesse o preço de fechamento estivesse abaixo das duas media saísse da posição comprada e revertesse para a vendida e vice e versa, mas utilizando o parâmetro PositionsTotal não realiza estas operações e não sei que parâmetro utilizar.


PositionTotal() < 1 é 0, logo se tem uma posição aberta isso é false.