Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
hank4
Gaduła
Gaduła
Posty: 179
Rejestracja: 26 kwie 2012, 21:07

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: hank4 »

Witam
Poszukuje programisty o pseudonimie silesia?

xbzykx
Uczestnik
Uczestnik
Posty: 1
Rejestracja: 24 lis 2014, 14:12

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: xbzykx »

Witam jestem totalnie zielony w temacie wiec pytanie moze byc idiotyczne a interesuje mnie czy jest mozliwosc stworzenia indykatora ktory bedzie suma dwoch roznych kursow (np. kursu ropy i usd/pln) oraz czy istnieje mozliwosc wyswietlenia na jednym wykresie kilku kursow?
Z gory dzieki :)

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: swer »

Powiedzcie mi czemu mi to nie chce dzialac?

Kod: Zaznacz cały

int start()
  {
double lot=1;
lot = lot +0.1;

if(otwarcie<banda2 && cenaB<banda2) OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,Ask+10*Point,"",1,0,Blue); 
if(otwarcie>banda1 && cenaA>banda1) OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,Bid-10*Point,"",3,0,Red);          

}
//Print("lot: ", lot);
Print("Error: ", GetLastError());
//----
   return(0);
   }
to oczywiscie nie jest caly kod, ale chodzi mi o to jak to zapisac zeby po kazdej transakcji lot mi sie zwiekszal o 0.1.
raz tylko dodaje 0.1 tak jakby petla raz sie wykonywala

z gory dzieki

Awatar użytkownika
por. Borewicz
Gaduła
Gaduła
Posty: 93
Rejestracja: 25 cze 2014, 11:58

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: por. Borewicz »

Dodaj słowo kluczowe static przed deklaracją zmiennej lot.
Więcej o zmiennych lokalnych i statycznych:

http://docs.mql4.com/basis/variables/local
http://docs.mql4.com/basis/variables/static

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: swer »

hmm dalej nie chula, mam jakies dziwne wielkie jakby losowe wartosci lota

starydziadek
Bywalec
Bywalec
Posty: 5
Rejestracja: 06 gru 2014, 17:27

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: starydziadek »

Witam

Mam problem ze startem w MT4 edytor strategii. po zrobieniu prostego EA i skompilowaniu dopisałem zmienną stoplose i po tym jak kompilowałem pokazuje się błąd taki jak na załączonym zdjęciu. Co może być powodem błędu?

Kod: Zaznacz cały

#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict

input double takeprofit = 200; 
input double stoplose = 200;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---


   
  }
//+------------------------------------------------------------------+
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

David_Plavko
Gaduła
Gaduła
Posty: 132
Rejestracja: 27 sie 2011, 13:10

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: David_Plavko »

swer tam nie ma pętli. Kod wykonuje się na nowo przy każdym ticku, dostajesz "losowe" wartości lota w zależności od ilości ticków pomiędzy sygnałami.

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: swer »

Jeśli macie chwile weźcie to, skompilujcie u siebie i sprawdzcie czy chodzi u was, napisalem teraz nawet osobna funkcje zeby zwiekszalo lota i juz nie mam pomyslow co jest nie tak. sa dwie instrukcje Print z "lot" i "LOT" ktore pokazuja wartosci normalnego lota i tego co mialbyc zwiekszony.
#property copyright "Copyright © 2010, Swer"
#property link "http://www.metaquotes.net"


extern static double lot =1;
double zwieksz()
{

lot = lot + 1;
return(lot);
}
bool isNewBar()
{

static int prevTime;
if(Time[0]!=prevTime)
{
prevTime=Time[0];

return(true);
}
else
{
return(false);
}
}
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+

int start()
{

//----
//double iOpen(string symbol, int timeframe, int shift)
//if(Hour()>=7&&Hour()<12)
//{

double banda1;
double banda2;
double cenaA;
double cenaB;
double otwarcie;



bool nowaSwieca=isNewBar();
double wiekszylot=zwieksz();
cenaB = Bid;
cenaA = Ask;


banda1 = iBands(NULL,0,20,2,0,0,1,1);
banda2 = iBands(NULL,0,20,2,0,0,2,1);
otwarcie=iOpen(NULL,PERIOD_M5,0);
//Print("banda1: ", banda1);
//Print("banda2: ", banda2);
//Print("Open: ", otwarcie);
//Print("cena: ", cenaA);
Print("lot: ", lot);
Print("LOT: ", wiekszylot);
if(OrdersTotal()<1)
{



if(otwarcie<banda2 && cenaB<banda2) OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,Ask+10*Point,"",1,0,Blue);
if(otwarcie>banda1 && cenaA>banda1) OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,Bid-10*Point,"",3,0,Red);


}

Print("Error: ", GetLastError());
//----
return(0);
}

David_Plavko
Gaduła
Gaduła
Posty: 132
Rejestracja: 27 sie 2011, 13:10

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: David_Plavko »

Podpowiedz: zwiększaj lot po wysłaniu zleceń a nie po każdym ticku...

swer
Stały bywalec
Stały bywalec
Posty: 43
Rejestracja: 05 mar 2009, 13:13

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: swer »

ok dzieki David_Plavko zaskoczylo działa jak powinno :)

ODPOWIEDZ