Jemand soll ein Drehbuch für 5 wmz schreiben. - Seite 14

 
Profitabl:

Dieser Code kompiliert mit vier Fehlern, vielleicht fehlen Klammern?


Versuchen Sie es so:

Nun, die Funktionen NumberOfPositions und ClosePositions müssen im Code vorhanden sein

extern double TakeProfit = 120;
extern double StopLoss = 120;
extern double Lots = 0.1;
int Magic = 1234567;
int ticket;

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
if ( DayOfWeek()==4)//если сегодня четверг
   {
    if ( Hour() == 23) //если - 23 часа терминального времени
       {
        if ( NumberOfPositions(NULL,OP_BUY, Magic )==0 ) //если нет открытых бай-позиций
           { 
           //"если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,"(с)
           //"а цена опен среды больше цены опен вторника" (с),
           //"да ещё цена опен вторника больше цены опен понедельника" (с),
           if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) 
              {
               ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask+StopLoss*Point,3,0,Ask+TakeProfit*Point,"Name_Expert",16384,0,Green);
               if(ticket!=-1)
                  {Print("Error opening BUY order : ",GetLastError());
                   return(0);}
              }     

           }
           
        }
   }       

if ( DayOfWeek()==5 && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
ClosePositions(NULL,OP_BUY, Magic); }

return(0);
}
// the end.

 

=================

Es gab keine 4 Fehler. Es gab 4 ungenutzte Funktionen. Es wurde aufgeklärt.

Ich sage es noch einmal. Prüfung auf tf=n1

extern int       Magic=5671;

extern double    lots = 0.1;
extern int       StopLoss=120;
extern int       TakeProfit=120;

extern string _________________ = "=== Прочие Параметры советника  ===";
extern int        Slippage        = 10; // Проскальзывание цены
extern string Name_Expert = "Обезьяна Чи-Чи-Чи продавала кирпичи";
extern bool   UseSound      = True;   // Использовать звуковой сигнал
color  clOpenBuy     = Blue;        // Цвет значка открытия покупки
color  clOpenSell    = Red;         // Цвет значка открытия продажи
 color  clCloseBuy    = Green;     // Цвет закрытия покупки
 color  clCloseSell   = Green;    // Цвет закрытия продажи
extern int    NumberOfTry   = 10;           // Количество попыток
 string SoundSuccess  = "ok.wav";          // Звук успеха
 string SoundError    = "timeout.wav";    // Звук ошибки

//----------------------------------
double SL,TP;
int ticket;
static int prevtime = 0;
int StopLevel;

//-- Подключаемые модули --

#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+

int start()
  {
// задаем работу по ЦЕНАМ ОТКРЫТИЯ 
if (Time[0] == prevtime) return(0); //если появился новый бар
   prevtime = Time[0]; // начинаем работу

StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL); // вызываем разрешенный 
//минимаьный стоп-Уровень
//======================= открываем позиции =====================================
if ( DayOfWeek()==4){//если сегодня четверг
if ( Hour() == 23)  {//если - 23 часа терминального времени
if ( NumberOfPositions(NULL ,OP_BUY, Magic )==0 ) { //если  нет открытых бай-позиций 
//если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,
//а цена опен среды больше цены опен вторника,
//да ещё цена опен вторника больше цены опен понедельника,
if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) {
//покупаем 
      SL=0;TP=0;
      if(StopLoss>0 && StopLoss>StopLevel )    SL=Bid-Point*StopLoss;
      if(TakeProfit>0 && TakeProfit>StopLevel) TP=Bid+Point*TakeProfit;
      if(StopLoss  <StopLevel && StopLoss>0)   SL = Bid-Point*StopLevel; 
      if(TakeProfit<StopLevel && TakeProfit>0) TP = Bid+Point*StopLevel; 
   ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,SL,TP,"Name_Expert",Magic,0,clOpenBuy );
   if(ticket < 0) {
            Print("Ошибка открытия ордера BUY #", GetLastError()); 
            Sleep(10000);  prevtime = Time[1];   return (0); 
                  } 
        }}}}
//================== конец блока открытия ==================================
 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
 ClosePositions(NULL,OP_BUY, Magic); }            
                  
//================== Конец блока закрытия  =============================
  return(0);
  }
//ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Конец функции int start() ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ 
 
 //ЖЖЖЖЖЖЖЖЖЖЖ ПОЛЬЗОВАТЕЛЬСКИК ФУНКЦИИ ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ

//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("BuyLimit");
    case OP_SELLLIMIT: return("SellLimit");
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
  }
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия  : 19.02.2008                                                      |
//|  Описание: Закрытие одной предварительно выбранной позиции                 |
//+----------------------------------------------------------------------------+
void ClosePosBySelect() {
  bool   fc;
  color  clClose;
  double ll, pa, pb, pp;
  int    err, it;

  if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
    for (it=1; it<=NumberOfTry; it++) {
      if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
      while (!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      pa=MarketInfo(OrderSymbol(), MODE_ASK);
      pb=MarketInfo(OrderSymbol(), MODE_BID);
      if (OrderType()==OP_BUY) {
        pp=pb; clClose=clCloseBuy;
      } else {
        pp=pa; clClose=clCloseSell;
      }
      ll=OrderLots();
      fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
      if (fc) {
        if (UseSound) PlaySound(SoundSuccess); break;
      } else {
        err=GetLastError();
        if (UseSound) PlaySound(SoundError);
        if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
        Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
              ErrorDescription(err),", try ",it);
        Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
        Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
              "  tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
        Sleep(1000*5);
      }
    }
  } else Print("Некорректная торговая операция. Close ",GetNameOP(OrderType()));
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru/                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect();
        } } } } }

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }}}}}  return(kp);}

 
leonid553:

=================

Es gab keine 4 Fehler. Es gab 4 ungenutzte Funktionen. Es wurde aufgeklärt.

Ich sage es noch einmal. Überprüfung von tf=n1.


Sie haben tatsächlich ein Beispiel gegeben, Sie können mir WMR schicken, um 160 Rubel an eine Wohltätigkeitsorganisation zu überweisen.

Das Einzige, was ich nicht tun kann, ist freitags um 23:00 Uhr die VERKAUFEN-Positionen zu schließen, da sonst nur die KAUFEN-Positionen geschlossen werden, während die VERKAUFEN-Positionen für drei oder vier Tage geändert werden und natürlich auch die VERKAUFEN-Positionen geschlossen werden.

Diese Euro- und Pfund-Daten können als zusätzliche Bedingungen berücksichtigt werden ? gerade wenn die Prognosen nicht asymmetrisch sind B=BB oder H=HH sollte man in die entgegengesetzte Richtung kaufen, es verbessert das Ergebnis viel mehr.

Aber wenn die gleichen Daten für das Pfund und den Euro zur gleichen Zeit
EUR EUR "fällt am Dienstag, fällt am Mittwoch, fällt am Donnerstag
GBP "steigend, Mi steigend, Di fallend".
dann öffnen Sie nicht "VERKAUFEN", sondern "KAUFEN".

Apropos Rentabilität: Wenn man ungenaue Prognosen herausrechnet, ergeben sich bei nur 70 Trades mit sechs Freitagsprognosen rund 1500 Pips. Dies kann an den restlichen Tagen mit dem Fünffachen multipliziert werden, und die Anzahl der Lose im Verhältnis zum Umsatz kann um das Zweifache erhöht werden - egal wie viele es sind, es ist kostendeckend. Ich gebe Leonid eine Tabelle von 160 EUR GBP CHF JPY Prognosen kostenlos für die Teilnahme an dem Problem, senden WMR ale2715@yandex.ru und in der Rücksendung wird Prognosen erhalten, schreiben Sie einen EA, werden Sie verdienen, aber nicht in der Meisterschaft mit ihm zu beteiligen, werde ich ihn bis zu der Meisterschaft auch Haken.

 
lasso:

Versuchen Sie es auf diese Weise:

Nun, und die Funktionen NumberOfPositions und ClosePositions sollten im Code vorhanden sein


Danke, wir belassen es vorerst dabei
 
Profitabl:

Das Einzige, was nicht funktioniert, ist, dass die SELL-Positionen auch freitags um 23:00 Uhr geschlossen werden, ansonsten werden nur die BUY-Positionen geschlossen, während die SELL-Positionen für drei oder vier Tage geändert werden und natürlich auch die SELL-Positionen geschlossen werden.

In der Tat... )))

Sie sollte folgendermaßen aussehen

 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
 ClosePositions(NULL,-1, Magic); }            
                  
//================== Конец блока закрытия  =============================
  return(0);
  }
//ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Конец функции int start() ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ 
 

Die Eröffnung einer Verkaufsposition war überhaupt nicht Teil des Codes. Denn bei der ursprünglichen Aufgabe ging es darum, eine Kaufposition für den Franken zu eröffnen.

//------------

Ja, ich muss den Abschluss ein wenig ändern - ClosePositions(NULL,-1, Magic)

 
leonid553:

Es waren nicht vier Fehler. Es gab vier ungenutzte Funktionen. Ich habe es aufgeräumt.

Ich sage es noch einmal. Überprüfung von tf=n1

Bei näherer Betrachtung lassen sich die folgenden Nuancen feststellen:

1) Die Bedingungen widersprechen einander

//если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,
//а цена опен среды больше цены опен вторника,
//да ещё цена опен вторника больше цены опен понедельника,
if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) {
//покупаем 


2) Der Aufruf von Zeitreihen (vom Typ Open[48]) ist nicht ganz korrekt, wenn man die Historie testet, da es durchaus Lücken in der Historie geben kann und der Preis daher nicht aus dem Bar stammt, über den der Starter geschrieben hat


3) Abschlussbedingung.

 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем

Es ist nicht allgemeingültig, da z. B. die Maklerfirma Al... hat und es am Freitag keinen Balken gibt, dessen Stundenwert gleich 23 ist.


4) Und einige kleinere Nuancen, deren Einfluss auf die resultierende Gleichgewichtskurve jedoch keineswegs gering ist .... ))



Bitte haben Sie Verständnis für mich. Dieser Beitrag ist keine Beschwerde gegen leonid553, auf keinen Fall. (Hut ab vor leonid!!!)


Mein Punkt ist: "Chirk, chirk script, in fünf Minuten" ist natürlich möglich. Die Praxis zeigt jedoch, dass ein einfaches TOR nicht möglich ist.

Überall dort, wo die Grenzwerte aller Parameter überprüft werden müssen, bei der Fehlersuche, beim Setzen von "Fehlerfallen" usw.

Und um endlich ein anständiges kleines Produkt zu bekommen, und nicht irgendein "Skript", ist viel Zeit nötig, egal wie man es betrachtet... Leider.

 

Der Berater ist bereits auf dem realen Handel, eröffnete heute die ersten beiden Trades bei 23, jetzt frage ich mich, wie es morgen schließen wird. Ich danke Ihnen allen für Ihre Teilnahme.

Und in dieser Tabelle EA's Testergebnisse für Dienstag Vorhersagen, markiert "I", das sind helle Signale, Handel nur auf sie - das ist Methode B, seine Summen sind in der Spalte ganz rechts, alle Summen in Pips.

Zum Beispiel, in meinem Expert Advisor für Dienstag CHF Ich habe nur BBB, BHN und BHN und fügte hinzu, die Möglichkeit, Lose proportional zur Einzahlung zu erhöhen. Die Summe im Test für 10% Einzahlung ist 180% mit 55 Verlusten und profitabel, aber für 20% Kauf ist es 450% Gewinn. Sie trennen die Körner von der roten Spreu, bringen dem Expert Advisor bei, die mit "c" gekennzeichneten Signale für widersprüchliche Prognosen asymmetrischer Paare zu ändern, reduzieren die hinzugefügten Lots nicht, handeln gleichzeitig mit allen vier Währungen und sind "mit dem Direktor des Forex vertraut". Lösen Sie einfach diese drei Probleme und Sie erhalten diesen EA, nur nehmen Sie damit nicht an der Meisterschaft teil, meine Analytik verherrlicht meinen Namen.

Überprüfen Sie selbst 450% vom 27.01.08 aus nur drei Vorhersagen von 160, CHF auf 1H. Er betrug sogar 830%, wäre so geblieben und hätte sogar noch mehr betragen, wenn der Expert Advisor nur die Lots erhöht hätte.

Dateien:
450_2.rar  20 kb
 

Ohne Worte... Es ist wie ein Gral. Warum ist Ihnen das nicht früher aufgefallen?

 
lasso:

Bei näherer Betrachtung ergeben sich folgende Nuancen:

......

Bitte verstehen Sie mich richtig. Dieser Beitrag ist keine Beschwerde über .......

Ich gebe nicht vor, den Code korrekt zu schreiben. Ich habe dort ausdrücklich darauf hingewiesen, dass der von mir geschriebene Code nur ein Entwurf ist.

Ich habe mich noch nicht mit allen taktischen Feinheiten befasst, sondern nur mit allgemeinen Begriffen. Aber ich denke schon, dass diese Taktik sehr ernst genommen werden sollte. Ich beschäftige mich hauptsächlich mit dem saisonalen Rohstoffhandel, und deshalb denke ich, dass es hier Perspektiven gibt. Denn es handelt sich im Wesentlichen um denselben "quasi-saisonalen Handel", nur eben kurzfristig und auf Zeit:

"Trendcheck:
Nehmen wir Silber als Beispiel. Die einstündige Kerze von 18.00 bis 19.00 Uhr stimmte in mehr als 70 % der Fälle mit der Preisbewegung in den folgenden 23 Stunden überein, was übrigens auch für einige andere Metalle typisch ist. Und dies geschah in den letzten 50, 40, 30, 20 und 10 Tagen. Also, nach 19 Uhr geben wir einen Auftrag in Richtung dieser Kerze....
" (aus - BR-Forum).

Außerdem habe ich - ganz zufällig - erst gestern (siehe obiges Zitat) herausgefunden, dass genau mit einer solchen (naja, fast "eins-zu-eins") Taktik der Demo-Wettbewerb in einem bekannten DC BR im letzten Monat gewonnen wurde. Mit einem Preisgeld von $ 5000.

Und der Teilnehmer, der in diesem September-Wettbewerb mit Futures gehandelt hat, hat mit dieser Taktik von Monatsbeginn an mehr als 1000 Gewinnpunkte erzielt. (Die Regeln des Demo-Wettbewerbs sind dort sehr streng - die Teilnehmer müssen im Forum jede ihrer Transaktionen zum Zeitpunkt des Einstiegs beschreiben und das Risiko (Stop-Loss) jeder Transaktion darf -200 Dollar nicht überschreiten, andernfalls erfolgt eine Disqualifikation).

Also, NorthAlec, - du spottest wahrscheinlich umsonst.