Chiusura delle posizioni. Segnale indicatore acceso. - pagina 8

 
Lukyanov:

Utile netto 6157.73


Sergey, un profitto di $6000 a 6000 - 9000 scambi.

1. Cos'è il MOJ?

2. 1.500 scambi al giorno - quale broker può resistere a questo?

 

Buona sera a tutti! C'è stato un altro problema. Per favore, ditemi se sapete come scrivere l'espressione

hann = iCustom(.... .... .... ) per l'indicatore

Almeno nella sua forma più elementare - per impostare il parametro Lb e il numero di barra...

/+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                                          Kalenzo |
//|                                      bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Kalenzo"
#property link      "bartlomiej.gorski@gmail.com"
//----
#property indicator_buffers 1
#property indicator_color1 Blue
extern int Lb=10;
double ssl[],Hld,Hlv;
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,ssl);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {   return(0);  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   for(int i=Bars-Lb;i>=0;i--)     {
      if(Close[i]>iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1))
         Hld=1;
      else        {
         if(Close[i]<iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW,i+1))
            Hld=-1;
         else
            Hld=0;
        }
      if(Hld!=0)
         Hlv=Hld;
      if(Hlv==-1)
         ssl[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1);
      else
         ssl[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW,i+1);
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
Ecco il grafico -
 
rid:

Buona sera a tutti! C'è stato un altro problema. Per favore, aiutate chi può - scrivere un'espressione

hann = iCustom(.... .... .... ) per l'indicatore

iCustom( Symbol(), Period(), "SSL", indLb, 0, bar );
 

Grazie, komposter.

 

Buon pomeriggio. Si prega di avvisare.

C'è un indicatore Force-index installato in mt4. È bipolare, con una linea mediana a t.0.

Ecco il suo codice.

#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int ExtForcePeriod=13;
extern int ExtForceMAMethod=0;
extern int ExtForceAppliedPrice=0;
//---- buffers
double ExtForceBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string sShortName;
   SetIndexBuffer(0, ExtForceBuffer);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
//---- name for DataWindow and indicator subwindow label
   sShortName="Force("+ ExtForcePeriod+")";
   IndicatorShortName( sShortName);
   SetIndexLabel(0, sShortName);
//---- first values aren't drawn
   SetIndexDrawBegin(0, ExtForcePeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Force Index indicator                                            |
//+------------------------------------------------------------------+
int start()
  {
   int nLimit;
   int nCountedBars=IndicatorCounted();
//---- insufficient data
   if(Bars<= ExtForcePeriod) return(0);
//---- last counted bar will be recounted
   if( nCountedBars> ExtForcePeriod) nCountedBars--;
   nLimit=Bars- nCountedBars;
//---- Force Index counted
   for(int i=0; i< nLimit; i++)
      ExtForceBuffer[ i]=Volume[ i]*
(iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));
//---- done
   return(0);
  }


Tuttavia. Il mio compito è quello di disegnare l'indicatore nella sua interezza in zona positiva (o negativa, non importa).

Per farlo programmaticamente.

Cioè non come questo: double force=(iForce+10), ma programmaticamente!

Si prega di consigliare chi sa cosa aggiungere (inserire) al codice per questo scopo?

 
rid >> :

Tuttavia. Ho bisogno che l'intero indicatore sia disegnato nella zona più (o meno, qualunque sia).

Per favore ditemi, chi lo sa, cosa dovrei aggiungere al codice per questo?

IMHO, l'involucro sigmoidale è quello che ti serve. Il buffer avrà valori da 0 a 1.

for(int i=0; i< nLimit; i++)
      ExtForceBuffer[ i]=Volume[ i]*
(iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));

//заменяем на 

for(int i=0; i< nLimit; i++)
{
         ExtForceBuffer[ i]=Volume[ i]*
   (iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
   iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));

   ExtForceBuffer[ i] = Sigmoid( ExtForceBuffer[ i]);
}

//...

double Sigmoid(double x)
{
   double value = MathExp( x);
   return ( value/(1 + value))
}
 

Grazie, TheXpert! Farò un tentativo.

//gzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.

Ha funzionato!

 

Buon pomeriggio a tutti. Voglio fare il mio primo EA, ma non so come scrivere il codice. Le transazioni sono aperte sul MA. Se il prezzo tocca la MA dall'alto, allora compra. Se tocca sotto, allora è una vendita. La pendenza del MA dovrebbe essere considerata. La pendenza delle MA e l'apertura dell'ordine dovrebbero essere unidirezionali. Grazie.

 
Shu писал(а) >>

La ricerca è affascinante! fa anche bene al cervello e alla sperimentazione. lo saluto e lo rispetto.

Tutte le biciclette e le moto sono già state (barrato) inventate prima di noi - mettete tutti gli ordini nel vostro array (forse più di uno) e fateci tutte le manipolazioni che volete. ordinarlo secondo qualsiasi criterio, o cancellarlo (il ticket è tuo amico), o modificarlo (è facile fare modifiche di stoploss/takeprofits, o creare nuovi ordini.

ps (un'altra cosa). se decidete di prendere sul serio la vostra creazione, ricordate che in qualsiasi secondo (millisecondo) la connessione con la vostra società di intermediazione può disconnettersi. La soluzione ideale è permettere all'Expert Advisor di vedere la necessità di chiudere certi ordini (in questo caso) dopo un arresto/attivazione di emergenza.

Tuttavia, la maggior parte dei "grails" venduti pubblicamente sotto forma di P.C. - sono similmente giocattolo...

Riguardo agli array, non capisco bene. Ma la seconda idea - che se l'esperto perde il segnale per la chiusura, sarà ancora in grado di cogliere la necessità della chiusura, mi piace. Ma come farlo...

 

Pomeriggio.

L'EA inserisce ordini limit bylimit seguendo il movimento del prezzo a distanza =Distance.

Ho bisogno di eliminare gli ordini eccessivi (più lontani) man mano che il prezzo si muove verso l'alto.

L'ho fatto. Ma per qualche ragione, funziona molto male! Il primo ordine viene cancellato normalmente. Poi, al contrario, quelli più vicini al prezzo vengono cancellati! Poi si fermano o vengono cancellati "di punto in bianco", e il registro genera l'errore 4108 (biglietto sconosciuto). Poi per qualche tempo vengono cancellati normalmente.

Credo sia stato detto da qualche parte che è importante organizzare correttamente la ricerca degli ordini.

//жжжжж Удаление лишних байлим ордеров жжжжжжжжж
if( NumberOfOrders(NULL,OP_BUYLIMIT, MAGIC)> КоличествоОрдеров  )  {
    //если ордеров больше заданного значения 
//for (int z = OrdersTotal() - 1; z >= 0; z -- )  {//перебираем с "конца"
  for ( int z=0;    z<OrdersTotal();        z++)  {//перебираем с начала         
  if (OrderSelect( z, SELECT_BY_TICKET, MODE_TRADES))          {//перебираем по тикету           
   if (OrderSymbol()==Symbol()&& OrderType() == OP_BUYLIMIT) {//выбираем байлимиты   
     if ( OrderOpenPrice() <(Ask-( КоличествоОрдеров* Дистанция)*Point) ) {
     //если расстояние от тек. цены больше заданного
   
   OrderDelete(OrderTicket(),Yellow);   //  return(0);    //удаляем самый дальний
            }}}}} 

Tuttavia. Indipendentemente dal fatto che il recupero dell'ordine sia eseguito "dalla fine" o dall'inizio. Il risultato non è corretto.

Il codice sembra essere il più semplice!

Cosa può esserci di sbagliato qui? Per favore, consigliatemi!