Autor Thema: StepMAExpert Problem  (Gelesen 584 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

  • Buchstabensortierer
  • ***
    • Beiträge: 7
    • Karma: +0/-0
    • Mitglied seit:
      06 May 2011

  • Stop
StepMAExpert Problem
« am: Mai 08, 2011, 07:05:19 am »
Hi,
ich habe einen EA den ich seit geraumer Zeit im Demo teste und mich da doch in soweit überzeugt hat, als das ich ihn gerne im RealAccount weiterlaufen lassen möchte.
Mein Problem ist allerdings, dass er im Real keine Positionen eröffnet.
Mein DemoAcc ist bei Alpari UK mein RealAcc bei Thinkforex. Aber die Preise sind nahezu identisch. Daran sollte es also nicht liegen.
Hat jemand eine Idee woran es liegen könnte?
Kann demjenigen auch gerne den Code zeigen.


Forexfabrik

StepMAExpert Problem
« am: Mai 08, 2011, 07:05:19 am »

  • FORENTROLL
  • Sponsor
  • Extremschreiber
  • *
    • Beiträge: 625
    • Karma: +249/-5
    • Mitglied seit:
      05 Jan 2011
    • just trading
  • Broker: diverse

  • Stop
Antw:StepMAExpert Problem
« Antwort #1 am: Mai 08, 2011, 07:15:55 am »
4 digit/5 digit Broker?

Poste doch einfach mal den code (oder den EA) hier, dann wird sich der Fehler sicherlich zügig finden und beheben lassen.  8)

  • Buchstabensortierer
  • ***
    • Beiträge: 7
    • Karma: +0/-0
    • Mitglied seit:
      06 May 2011

  • Stop
Antw:StepMAExpert Problem
« Antwort #2 am: Mai 08, 2011, 16:49:54 pm »
Das ist der Code.
Beide Broker haben 5 Digits, daran kann es nicht liegen.
Hoffe ihr findet den Fehler :)
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
//+------------------------------------------------------------------+
//|                                           StepMAExpert_v1.42.mq4 |
//|                           Copyright © 2005, TrendLaboratory Ltd. |
//|            [url=http://finance.groups.yahoo.com/group/TrendLaboratory]http://finance.groups.yahoo.com/group/TrendLaboratory[/url] |
//|                                       E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, TrendLaboratory Ltd."
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"

#include <stdlib.mqh>
//#include <Tracert.mqh>

//---- input parameters
extern string     Expert_Name = "---- StepMAExpert_v1.42 ----";

extern int        Magic=1007;
extern int        Slippage=6;
extern bool       Trace = false;          // Trace Switch

extern string     Main_Parameters = " Trade Volume & Trade Method";
extern double     Lots = 0.2;
extern double     InitialStop = 62;        // Initial Stop Value
extern double     TakeProfit = 0;         // Take Profit Value
extern int        TrailingStopMode = 1;   // Trailing Stop Mode Switch   
extern double     TrailingStop=0;         // Classic Trailing Stop Value
extern bool       SwingTrade = true;     // Swing Trade Switch
extern bool       PendingOrder=false;     // PendingOrder/InstantExecution Switch
extern double     PendOrdGap=10;          // Gap from High/Low for Pending Orders
extern double     BreakEven=73;            // BreakEven Level in points
extern double     BreakEvenGap=28;         // BreakEven Gap in points

extern string     Calc_Parameters = " StepMA Parameters ";
extern int        Length=10;              // ATR Period
extern double     Kv=1.0;                 // Sensivity Factor
extern double     StepSize=12;             // Constant Step Size (if need)
extern bool       HighLow=false;          // High/Low Mode Switch (more sensitive)
extern double     DeltaLong =7;           // Breakout Depth for Long in points
extern double     DeltaShort=4;           // Breakout Depth for Short in points
extern double     Ks=7.1;                 // StopLoss Factor
extern double     Kp=7.5;                 // TakeProfit Factor
extern int        FilterPeriod=70;        // Filter Period (EMA Period)
extern int        Nbars=1000;             // Bars Number for calculation during initialization

extern string     MM_Parameters = " MoneyManagement by L.Williams ";
extern bool       MM=false;               // ÌÌ Switch
extern double     Risk=0.15;              // Risk Factor
extern double     LossMax=1000;           // Maximum Loss by 1 Lot


int      trend=0,TradeSignal=0,ExitSignal=0,prevtrend=0,matrend=0,Kz=0,mode=0,Type=0, numords;
double   Smin0=0,Smax0=0,Smin1=0,Smax1=0,Price=0,PriceStop=0, BuyProfit=0, SellProfit=0;
double   line0=0,line1=0,bsmin1=0,bsmax1=0, Step=0, point=0;
double   BuyStop=0,SellStop=0,ATRmin=10000,ATRmax=0,bsmax2=0,bsmin2=0;
int      b=0,cnt=0, digit=0;
bool     FirstTime = false;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
FirstTime = true;   
//----
   return(0);
  }
 
// ---- Scan Trades
int ScanTrades()
{   
   int total = OrdersTotal();
   int numords = 0;
     
   for(int cnt=0; cnt<total; cnt++)
   {       
   OrderSelect(cnt, SELECT_BY_POS);           
   if(OrderSymbol() == Symbol() && OrderType()<=OP_SELLSTOP && OrderMagicNumber() == Magic)
   numords++;
   }
   return(numords);
}     

void TrailProfit()
{       
    int total=OrdersTotal();
    for (cnt=0;cnt<total;cnt++)
    {
     OrderSelect(cnt, SELECT_BY_POS);   
     mode=OrderType();   
        if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic )
        {
            if ( mode==OP_BUY )
            {
            if (Kp > 0) BuyProfit = line0 + Kp*Step/Kv; else BuyProfit = OrderTakeProfit();
            //Print("BuyProfit=",BuyProfit," lin0=",line0," Step=",Step," Kp,Kv=", Kp,",",Kv); 
              if( BuyProfit > OrderTakeProfit())
              {
              OrderModify(OrderTicket(),OrderOpenPrice(),
                          OrderStopLoss(),
                          NormalizeDouble(BuyProfit,digit),0,LightGreen);
     return(0);
     }
            }
            if ( mode==OP_SELL )
            {
            if (Kp > 0) SellProfit = line0 - Kp*Step/Kv; else SellProfit = OrderTakeProfit();
            //Print("SellProfit=",SellProfit," lin0=",line0," Step=",Step," Kp,Kv=", Kp,",",Kv);
              if( SellProfit < OrderTakeProfit())
              { 
         OrderModify(OrderTicket(),OrderOpenPrice(),
                     OrderStopLoss(),
                     NormalizeDouble(SellProfit, digit),0,Yellow);    
              return(0);
              }
            }   
        }
    }   
}   
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int total,ticket;
//----
   
   //if ( Trace ) SetTrace();
   if (Bars>b)
   {     
   b=Bars;
   digit  = MarketInfo(Symbol(),MODE_DIGITS);
   point  = MarketInfo(Symbol(),MODE_POINT); 
   
   double Lotsi=Lots;     
     
   if ( MM ) Lotsi=NormalizeDouble(Lots*AccountFreeMargin()*Risk/LossMax,1);   
   if (Lotsi<0.1) Lotsi=0.1;
       
   if ( Nbars == 0 ) int NBars = Bars-Length-1; else NBars = Nbars-Length-1;
   if ( !FirstTime ) NBars = 1;
   
   int MA_Mode = 0;
   
   for ( int i=NBars; i>=1;i--)
   {
     
      if(StepSize>0)
      {
      Step=Kv*StepSize*point;
      }
      else
      {
      double AvgRange=0;
     for (int j=Length-1;j>=0;j--)
     {
            if(MA_Mode==0) double alfa= 1.0; else alfa= 1.0+1.0*(Length-i)/Length;
            AvgRange+= alfa*(High[j+i]-Low[j+i]);
        }
   double ATR0 = AvgRange/Length;
   
   if (ATR0>ATRmax) ATRmax=ATR0;
   if (ATR0<ATRmin) ATRmin=ATR0;

   Step=MathRound(0.5*Kv*(ATRmax+ATRmin)/point)*point;
   
   } 
 
Smin1=Smin0;
Smax1=Smax0;
 
   if(HighLow)
   {  
   Smax0=Low[i]+2.0*Step;
   Smin0=High[i]-2.0*Step;
   }
   else
   {  
   Smax0=Close[i]+2.0*Step;
   Smin0=Close[i]-2.0*Step;
   }
   
prevtrend = matrend;

if(Close[1]>Smax1) matrend=1;
if(Close[1]<Smin1) matrend=-1;
 
line1=line0;
 
   if(matrend>0)
   {
   if(Smin0<Smin1) Smin0=Smin1;
   line0=Smin0+Step;
   }
   else
   if (matrend<0)
   {
   if(Smax0>Smax1) Smax0=Smax1;
   line0=Smax0-Step;
   }  
   bsmin2=bsmin1;
bsmax2=bsmax1;
 
bsmin1=Smin0;
bsmax1=Smax0;
     
   if ( i==1 ){ FirstTime = false;}
   }

// Trade Signal area
      if(!SwingTrade) TradeSignal=0;
// - BUY     
      if
      (
      Close[1]>iMA(NULL,0,FilterPeriod,0,MODE_EMA,0,1)
      &&
      line0-line1>DeltaLong*point
      &&
      line1>0
      &&
      prevtrend<0
      )  TradeSignal= 1;
// - SELL     
      if
      (
      Close[1]<iMA(NULL,0,FilterPeriod,0,MODE_EMA,0,1)
      &&
      line1-line0>DeltaShort*point
      &&
      line1>0
      &&
      prevtrend>0
      )  TradeSignal= -1;

// Exit Signal area
       
// - BUY Orders     
      if
      (
      //Close[1]<iMA(NULL,0,50,0,MODE_EMA,0,1)
      //||
      line1-line0>0
      )  ExitSignal= -1;
// - SELL Orders     
      if
      (
      //Close[1]>iMA(NULL,0,50,0,MODE_EMA,0,1)
      //||
      line0-line1>0
      )  ExitSignal= 1;
     
      if(SwingTrade) ExitSignal=TradeSignal;
         
      TrailProfit();       
//-----------------------------
      total=OrdersTotal();
   for (cnt=0;cnt<total;cnt++)
      {
       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);   
       mode=OrderType();
       if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
       {
// Orders Close area  :
// - BUY Orders         
         if ( ExitSignal<0 )
         {
            if (mode==OP_BUY)
                  {
         OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
         }
         }
// - SELL Orders         
         if ( ExitSignal>0 )
      {
            if (mode==OP_SELL)
         {
          OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White);
                  }
         }   
     
          if (BreakEven > 0)
          {
             if (mode==OP_BUY)
                  {
         BuyStop = OrderStopLoss();
         if (Bid-OrderOpenPrice() > Kz*BreakEven*point)
            {
            BuyStop=OrderOpenPrice()+((Kz-1)*BreakEven+BreakEvenGap)*point;
            OrderModify(OrderTicket(),OrderOpenPrice(),
                        NormalizeDouble(BuyStop, digit),
                        OrderTakeProfit(),0,LightBlue);
            Kz=Kz+1;
            return(0);
            }
         }
               if (mode==OP_SELL)
                  {
                  SellStop = OrderStopLoss();
                  if (OrderOpenPrice()-Ask > Kz*BreakEven*point)
            {
            SellStop=OrderOpenPrice()-((Kz-1)*BreakEven+BreakEvenGap)*point;
            OrderModify(OrderTicket(),OrderOpenPrice(),
                        NormalizeDouble(SellStop, digit),
                        OrderTakeProfit(),0,Orange);
            Kz=Kz+1;
            return(0);
            }
         }
           }
   
// Orders Modify Area
           if (TrailingStopMode > 0)
           {
              if (mode==OP_BUY)
              {
     if (TrailingStop > 0)
     BuyStop = Bid - TrailingStop*point;
     else
     if ( Ks > 0) BuyStop = line0 - Ks*Step/Kv; else BuyStop = OrderStopLoss();
        if ( BuyStop > OrderStopLoss() || OrderStopLoss()==0)
        {
        OrderModify(OrderTicket(),OrderOpenPrice(),
                    NormalizeDouble(BuyStop, digit),
                    OrderTakeProfit(),0,LightGreen);
        return(0);
                 }
              }
// - SELL Orders         
              if (mode==OP_SELL)
              {
              if (TrailingStop > 0)
     BuyStop = Ask + TrailingStop*point;
     else
              if ( Ks > 0) SellStop = line0 + Ks*Step/Kv; else SellStop = OrderStopLoss();
                 if( SellStop < OrderStopLoss() || OrderStopLoss()==0)
                 {
                 OrderModify(OrderTicket(),OrderOpenPrice(),
                     NormalizeDouble(SellStop, digit),
                     OrderTakeProfit(),0,Yellow);    
                 return(0);
                 }
              }
           }   
      }
           
// Closing of Pending Orders     
      if(Close[1]<MathMin(iMA(NULL,0,50,0,MODE_EMA,0,1),line0))int PendClose=1;
      if(Close[1]>MathMax(iMA(NULL,0,50,0,MODE_EMA,0,1),line0))    PendClose=-1; 
     
      if (mode==OP_BUYSTOP && PendClose>0 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
      {
OrderDelete(OrderTicket());
   return(0);
   }
   
      if (mode==OP_SELLSTOP && PendClose<0 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OrderDelete(OrderTicket());
   return(0);
   }     
      }//for (cnt=0;cnt<total;cnt++)
// Orders open area :
// - SELL Orders       


if (ScanTrades()<1)
      {     
   if ( trend>=0 && TradeSignal<0 )
         { 
            if(PendingOrder)
     {
       Type=OP_SELLSTOP;
       Price=Low[1]-PendOrdGap*point;
      PriceStop=Price; 
   }
   else
     {
       Type=OP_SELL;
       Price=Bid;
        PriceStop=Ask;
     }
     
     if (InitialStop > 0)
            SellStop = PriceStop + InitialStop*point;
            else
            if( Ks > 0) SellStop= line0 + Ks*Step/Kv; else SellStop=0;
           
            if (TakeProfit > 0)
            SellProfit = Price - TakeProfit*point;
            else
            if (Kp > 0) SellProfit = line0 - Kp*Step/Kv; else SellProfit=0;
           
            ticket=OrderSend(Symbol(),Type,Lotsi,
                       NormalizeDouble(Price, digit),
                       Slippage,
                       NormalizeDouble(SellStop, digit),
                       NormalizeDouble(SellProfit, digit),
                       "sell",Magic,0,Red);
            Kz=1;
            if(SwingTrade) trend=-1; else {trend=0;}
            if(ticket<0)
            {
            Print("OrderSend failed with error #",GetLastError());
            return(0);
            }
      return(0);
   }
// - BUY Orders         
      if (trend <=0 &&  TradeSignal>0)
      {
            if(PendingOrder)
    {
       Type=OP_BUYSTOP;
       Price=High[1]+PendOrdGap*point;
       PriceStop = Price; 
    }
    else
    {
       Type=OP_BUY;
       Price=Ask;
       PriceStop = Bid;
    }
   
    if (InitialStop > 0)
            BuyStop = PriceStop - InitialStop*point;
            else
            if ( Ks > 0) BuyStop=line0-Ks*Step/Kv; else BuyStop=0;
           
            if (TakeProfit > 0)
            BuyProfit = Price + TakeProfit*point;
            else
            if (Kp > 0) BuyProfit = line0 + Kp*Step/Kv; else BuyProfit=0;
           
    ticket=OrderSend(Symbol(),Type,Lotsi,
                     NormalizeDouble(Price, digit),
                     Slippage,
                     NormalizeDouble(BuyStop, digit),
                     NormalizeDouble(BuyProfit, digit),
                     "buy",Magic,0,Blue);
                 
            Kz=1;
            if(SwingTrade) trend=1; else {trend=0;}
            if(ticket<0)
            {
            Print("OrderSend failed with error #",GetLastError());
            return(0);
            }
   return(0);
         }
      }
   }//if (Bars>b)
//----                         
 

//----
   return(0);
  }
//+------------------------------------------------------------------+
« Letzte Änderung: Mai 08, 2011, 21:00:55 pm von DaBuschi »

  • Global Moderator
  • Forum-As
  • *
  • *
    • Beiträge: 2920
    • Karma: +942/-20
    • Mitglied seit:
      22 Jul 2008

  • Stop
Antw:StepMAExpert Problem
« Antwort #3 am: Mai 08, 2011, 21:01:59 pm »
Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
Hoffe ihr findet den Fehler :)

Der Fehler in Deinem Posting lag zumindest mal darin, einen Code nicht als Code einzufügen. Das hab ich entdeckt und behoben. Den Fehler im Code können andere suchen ;)
Ein erfolgreicher Trader weiß nicht, was passieren wird. Aber er weiß zu jeder Zeit, was er tun muss.

Die Wahrscheinlichkeit, dass sich ein Trend fortsetzt ist größer, als das er bricht.

Die Wahrscheinlichkeit, dass ein Widerstand beim ersten Test hält, ist größer, als das er bricht.

  • Ist Forum süchtig
  • ****
    • Beiträge: 1567
    • Karma: +431/-289
    • Mitglied seit:
      16 Jun 2009

  • Vintage Carbon Backgammon Spinning Bubbles Air Traffic Chief 4 Wheels Madness
    Cryptraider Skidwrx Formula Fun
  • Stop
Antw:StepMAExpert Problem
« Antwort #4 am: Mai 08, 2011, 21:10:30 pm »
ich würde sagen der fehler liegt in dem unübersichtlichen geschreibsel
warum verwendet der nicht einfach tid "Digits" funktion sonder baut sich seine eigene?
The biggest drawdown is ahead of you. (from Joel R.)

aktueller Tetris Rekordhalter!!!!!!!!!!!!!!!!

warum ist mein karma positiv??????? bitte immer auf ein minus mehr als plus

  • FORENTROLL
  • Sponsor
  • Extremschreiber
  • *
    • Beiträge: 625
    • Karma: +249/-5
    • Mitglied seit:
      05 Jan 2011
    • just trading
  • Broker: diverse

  • Stop
Antw:StepMAExpert Problem
« Antwort #5 am: Mai 08, 2011, 21:20:10 pm »
Möglich daß Dein Broker ein STP/ECN Broker ist (thinkforex, google sagt daß er einer ist).
Sollte so klappen, siehe Dateianhang (habe die Datei umbenannt in v1.42a) ...

ab zeile 16 ergänzt:
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
extern string brokerhint = "ECN BROKER?";
extern bool brokerIsECN = true;

ab zeile 404:
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
if (brokerIsECN == false) ticket = OrderSend(Symbol(),Type,Lotsi,NormalizeDouble(Price,digit),Slippage,NormalizeDouble(SellStop,digit),NormalizeDouble(SellProfit,digit),"sell",Magic,0,Red);
  else if (brokerIsECN == true)
   {
    ticket = OrderSend(Symbol(),Type,Lotsi,NormalizeDouble(Price,digit),Slippage,0,0,"sell",Magic,0,Red);
    ticket=OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(SellStop,digit),NormalizeDouble(SellProfit,digit),OrderExpiration(),CLR_NONE);
   }

ab zeile 446:
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
if (brokerIsECN == false) ticket = OrderSend(Symbol(),Type,Lotsi,NormalizeDouble(Price,digit),Slippage,NormalizeDouble(BuyStop,digit),NormalizeDouble(BuyProfit,digit),"buy",Magic,0,Blue);
  else if (brokerIsECN == true)
   {
    ticket = OrderSend(Symbol(),Type,Lotsi,NormalizeDouble(Price,digit),Slippage,0,0,"buy",Magic,0,Blue);
    ticket=OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(BuyStop,digit),NormalizeDouble(BuyProfit,digit),OrderExpiration(),CLR_NONE);
   }

  • Blogger
  • Vielschreiber
  • *
    • Beiträge: 438
    • Karma: +43/-3
    • Mitglied seit:
      16 Jul 2010
  • Broker: FXCM

  • Stop
Antw:StepMAExpert Problem
« Antwort #6 am: Mai 08, 2011, 21:34:26 pm »
Wie funktioniert der EA denn genau? Welche Pairs, Timeframes und der generelle hinergedanke des EA wären nett. Wie sehen deine Settings aus mit denen du gute Erfahrungen gemacht hast?
Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen

  • Ist Forum süchtig
  • ****
    • Beiträge: 1802
    • Karma: +312/-6
    • Mitglied seit:
      25 Sep 2010
  • Broker: Oanda

  • Stop
Antw:StepMAExpert Problem
« Antwort #7 am: Mai 08, 2011, 23:39:22 pm »
Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
Wie funktioniert der EA denn genau? Welche Pairs, Timeframes und der generelle hinergedanke des EA wären nett. Wie sehen deine Settings aus mit denen du gute Erfahrungen gemacht hast?

Ich könnte ja jetzt was sagen aber ich tuhe es nicht.. :-"

  • Blogger
  • Vielschreiber
  • *
    • Beiträge: 438
    • Karma: +43/-3
    • Mitglied seit:
      16 Jul 2010
  • Broker: FXCM

  • Stop
Antw:StepMAExpert Problem
« Antwort #8 am: Mai 09, 2011, 00:19:30 am »
Dann lass es doch ,)
Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen

Forexfabrik

Antw:StepMAExpert Problem
« Antwort #8 am: Mai 09, 2011, 00:19:30 am »



 

Ähnliche Themen

  Betreff / Begonnen von Antworten Letzter Beitrag
12 Antworten
1038 Aufrufe
Letzter Beitrag August 04, 2011, 07:57:31 am
von Rainbowtrader
12 Antworten
1218 Aufrufe
Letzter Beitrag März 11, 2011, 14:47:28 pm
von forexler
6 Antworten
454 Aufrufe
Letzter Beitrag Juni 01, 2011, 23:36:40 pm
von forexler
0 Antworten
274 Aufrufe
Letzter Beitrag August 30, 2011, 18:19:03 pm
von UP49


ChartTec´s World Topsites