[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 447

 
T-G >>:

а почему как функция не работает а в старте работает?

In der Tat ist dies eine Funktion nur es hängt davon ab, was es ist if(Close_){ - gelten innerhalb der Start, wenn void Close_() { als eine Funktion, die außerhalb der Start funktioniert.


void Close_() {
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect( trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 
sergeev >>:


алгоритм у вас верный. сделайте распринтовку возможных ошибок и вообще ухзнать куда доходит эксперт при выполнении этого кода.

+ выведите расчитанные значения рси.

)))) Ich glaube, der Kerl hat einen Fehler im Code.....obwohl ich ein Neuling bin, könnte ich falsch liegen.

 
Es scheint kein Fehler vorzuliegen, nur ein kleiner Bug, und Sleep ist hier unnötig :)
 
gince >>:

//во внешние перменные
extern bool Close_ =true; //использовать закрытие по РСИ вкл выкл. 
// в старт закиньте
if ( Close_){
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect( trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if ((OrderType() == OP_BUY)&&( rsi_1 > Level_2 && rsi_0 < Level_2)) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if ((OrderType() == OP_SELL)&&( rsi_1 < Level_1 && rsi_0 > Level_1)) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 

Es ist ein Standard-Matsimple. Ich versuche nur herauszufinden, warum es nicht richtig schließt. Ich versuche die Logik für das Schließen von Geschäften. Ein Teil besteht aus RSI - deshalb funktioniert es nicht.


//if(Open[1]>ma_2 && Close[1]<ma_2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         if( rsi_1 > Level_2 && rsi_0 < Level_2) {OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         Print( rsi_0,"     ", rsi_1);}
         break;
        }
      if(OrderType()==OP_SELL)
        {
         //if(Open[1]<ma_2 && Close[1]>ma_2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         if( rsi_1 < Level_1 && rsi_0 > Level_1){OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
          Print( rsi_0,"     ", rsi_1);}
         break;

Nach dem Ausdruck wurde der Shift geändert.

rsi_0=iRSI( NULL,0,4, PRICE_CLOSE, 1 ); 
rsi_1=iRSI( NULL,0, 4, PRICE_CLOSE, 2 ) ;
 
Geschätzte Gurus!
Bitte lassen Sie es nicht unbemerkt.

Ich habe einen HP-Laptop gekauft, auf dem Windows Vista mit 64-Bit-Betriebssystem vorinstalliert ist.
Ich habe Probleme mit der Arbeit des EA bekommen. Am Anfang wurden meine Geschäfte irgendwie geöffnet. Aber nach einer Woche hat mein Expert Advisor einige Geschäfte nicht mehr geöffnet. Wir haben es ausprobiert und verdreht und sind schließlich zu dem Schluss gekommen, dass das Problem durch 64 Bit verursacht wurde. Wir haben es neu installiert und 32 Bit und 7 Windows installiert . Es hat einen Tag lang gut funktioniert und funktioniert dann nicht mehr. Vielleicht habe ich eine Art Update für Windows, das sich darauf auswirkt?

Auf anderen Computern (Kollegen) funktioniert der EA ohne jegliche Unterbrechung. Mein alter Laptop ist weg, und ich kann im Moment nichts kaufen.

Ich arbeite übrigens auf der Instatrader-Plattform.

Bitte, wenn jemand Erfahrung mit diesem Problem hat oder Vorschläge hat, wie es behoben werden kann, bitte um Rat.

 

Helfen Sie mir, einen einfachen EA neu zu erstellen, ich kämpfe schon seit einer Woche!!!! Oder schreiben Sie es noch einmal, alle EAs sind zu kompliziert und ich kann sie nicht für mich optimieren!

Ich möchte diesem EA einen MACD-Indikator hinzufügen, der seine KAUF- und VERKAUFSSIGNALE sendet, und der EA muss beides gleichzeitig tun. Es sollten nicht mehr als drei offene KAUF- und drei offene VERKAUFSaufträge vorliegen. Alle Aufträge sollten nur durch Stoploss und Takeprofit geschlossen werden, und nicht durch die Kraft des Expert Advisors.

//--------------------------------------------------------------------
extern int     period_EMA           = 28,
               period_WMA           = 8 ,
               stoploss             = 50,
               takeprofit           = 50,
               risk                 = 10;
double  LOT;
//--------------------------------------------------------------------
double SL, TP;
int TimeBar; //глобальная переменная
//--------------------------------------------------------------------
int start()
{
   if ( TimeBar==Time[0]) return(0);
   if ( TimeBar==0) { TimeBar=Time[0];return(0);}//первый запуск программы
   double EMA0 = iMA(NULL,0, period_EMA,0,MODE_EMA, PRICE_OPEN,0);
   double WMA0 = iMA(NULL,0, period_WMA,0,MODE_LWMA,PRICE_OPEN,0);
   double EMA1 = iMA(NULL,0, period_EMA,0,MODE_EMA, PRICE_OPEN,1);
   double WMA1 = iMA(NULL,0, period_WMA,0,MODE_LWMA,PRICE_OPEN,1);
   if ( EMA0< WMA0&& EMA1> WMA1) //Buy
   {
      TimeBar=Time[0];                            
      TP  = Ask + takeprofit*Point;
      SL  = Ask - stoploss*Point;     
      LOT = LOT( risk,1);
      CLOSEORDER("Sell");
      OPENORDER ("Buy");
   }
   if ( EMA0> WMA0&& EMA1< WMA1) //Sell
   {
      TimeBar=Time[0];                            
      TP = Bid - takeprofit*Point;
      SL = Bid + stoploss*Point;            
      LOT = LOT( risk,1);
      CLOSEORDER("Buy");
      OPENORDER ("Sell");
   }
return(0);
}
//--------------------------------------------------------------------
void CLOSEORDER(string ord)
{
   for (int i=OrdersTotal()-1; i>=0; i--)
   {                                               
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==true)
      {
         if (OrderSymbol()!=Symbol()) continue;
         if (OrderType()==OP_BUY && ord=="Buy")
            OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);// Close Buy
         if (OrderType()==OP_SELL && ord=="Sell")
            OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);// Close Sell
      }   
   }
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error;
   if ( ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2, SL, TP,"", 1,3);
   if ( ord=="Sell") error=OrderSend(Symbol(),OP_SELL, LOT,Bid,2, SL, TP,"",-1,3);
   if ( error==-1) //неудачная покупка OK
   {  
      ShowERROR( error,0,0);
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR(int Ticket,double SL,double TP)
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:                                                                               return;
      case 2:   Alert("Нет связи с торговым сервером   "              , Ticket," ",Symbol());return;
      case 3:   Alert("Error  неправильные параметры   Ticket ",       Ticket," ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",                 Ticket," ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",                         Ticket," ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",             Ticket," ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",                      Ticket," ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",                     Ticket," ",Symbol());return;
      case 4051:Alert("Error Недопустимое значение параметра функции ", Ticket," ",Symbol());return;
      case 4105:Alert("Error Ни один ордер не выбран ",                Ticket," ",Symbol());return;
      case 4063:Alert("Error Ожидается параметр типа integer ",        Ticket," ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",                  Ticket," ",Symbol());return;
      default:  Alert("Error  " , err,"   Ticket ",                     Ticket," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
double LOT(int risk,int ord)
{
   double MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
   LOT = AccountFreeMargin()* risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/ ord;
   if ( LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT = MarketInfo(Symbol(),MODE_MAXLOT);
   if ( LOT< MINLOT) LOT = MINLOT;
   if ( MINLOT<0.1) LOT = NormalizeDouble( LOT,2); else LOT = NormalizeDouble( LOT,1);
   return( LOT);
}
//--------------------------------------------------------------------

 
Serg-s-n >>:

Помогите переделать простой советник, бьюсь неделю!!!! Или написать снова, а то все советники слишком сложные и я их не могу под себя подстроить!!

Суть такая: Хочу добавить в этот советник( торгующий на пересечении) ещё индикатор MACD, который подает свой сигнал на продажу и покупку и советник должен параллельно выполнять их. Открытых ордеров BUY не больше трех и SELL тоже трех. Все ордера должны закрываться только по stoploss и takeprofit, а не принудительно советником.

 double MacdMain0 = iMACD(NULL,0, period_fast, period_slow, period_signal,0,MODE_MAIN, PRICE_OPEN,0);
double MacdSignal0 = iMACD(NULL,0, Periode_schnell, Periode_langsam, Periode_Signal,0,MODE_SIGNAL, PRICE_OPEN,0)
double MacdMain1 = iMACD(NULL,0, periode_schnell, periode_langsam, periode_signal,0,MODE_MAIN, PRICE_OPEN,1)
double MacdSignal1 = iMACD(NULL,0, Periode_schnell, Periode_langsam, Periode_Signal,0,MODE_SIGNAL, PRICE_OPEN,1);
if (EMA0< WMA0&& EMA1> WMA1 && MacdMain0 >MacdSignal0 && MacdMain1 <MacdSignal1)

Nun, dies wird Macd wie Muwings hinzufügen

 
Damit ist alles klar, aber wie stelle ich Aufträge ein? In der ursprünglichen Version haben wir zum Beispiel Kaufen eingestellt, und wenn ein Verkaufssignal empfangen wird, wird Kaufen geschlossen und Verkaufen eingestellt! Und ich brauche nicht zu schließen, der Expert Advisor sollte Aufträge mit Stopps setzen und das war's!
 

Ich habe eine Frage, oder besser gesagt eine Bitte, zu demselben EA EMA_WMA.mq4 und auch bezüglich des Abschlusses. Ist es möglich, anstelle der Schließung durch Take Profit oder zusätzlich dazu, die Möglichkeit der Schließung einer Bestellung durch max/min Wert von MA. Meines Erachtens wäre dies der beste Weg, um aus dem Markt auszusteigen (obwohl ich natürlich auch falsch liegen kann). Bitte fügen Sie diese Funktion zu diesem EA hinzu.

Noch eine kleine Frage: Ich erhalte eine Meldung wie diese: "Fehler. Stops close", obwohl mein Stop Loss auf 50 Pips gesetzt ist (MasterForex). Was bedeutet das?