Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

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

Nieprzeczytany post autor: Pierz Andrzej »

sonixh jest taka ciekawa funkcja jak Print() , ktora zawsze zuywam jak cos mi nie bngla i Tobie tez proponuje to zrobic ;)

Kod: Zaznacz cały

for (int k = 0; k < OrdersTotal(); k++) {
            if (OrderSelect(k, SELECT_BY_POS, MODE_TRADES)) {            
               if (OrderMagicNumber() == 111) {
                  if (OrderSymbol() == Pair_1) {
Print("Przypisuje wartosci do zmiennych profit_s1 i open_price_s1.");
                     profit_S1 = OrderProfit();
                     open_price_S1  = OrderOpenPrice();
                  }
               }
          }
       }
jezeli podczas dzialania bedziesz w zakladce strtegie mial informacje ze przypisuje do zmiennych to znaczy ze funkcja dziala prawidlowo, i cza szukac przyczyny gdzie indziej , jezeli nie to znaczy ze albo warunek magicnumber albo symbol nie zostal spelniony ;)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Tsubasa
Bywalec
Bywalec
Posty: 10
Rejestracja: 26 gru 2011, 11:52

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

Nieprzeczytany post autor: Tsubasa »

Witam ponownie,
1) jaka jest funkcja rysowania odcinka - znalazłem tylko prostą DRAW_LINE czyli linia na cały ekran.
2) jaka jest funkcja rysowania obszaru zamkniętego - obj_fibo? Jesli tak, to leżę bo to kosmos:))
Dziekuje z góry za odpowiedź


W commodore 64 każdy piksel miał podporządkowaną współrzędną.
W dzisiejszych komputerach może też jest taka mozliwość.
Podałbym 4 współrzędne i mam elegancki obszar, który wypełniłbym innym kolorem.. podałbym 2 współrzedne i mam piekny odcinek.

Awatar użytkownika
daromanchester
Przyjaciel Forum
Przyjaciel Forum
Posty: 2301
Rejestracja: 02 maja 2009, 12:48

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

Nieprzeczytany post autor: daromanchester »

I może jeszcze na sideborderach chciałbyś rysować te odcinki?
sorki nie mogłem się powstrzymać :mrgreen:
"Ekspert to taki człowiek, który popełnił wszystkie możliwe błędy w bardzo wąskiej dziedzinie" - Niels Bohr
"Każdy głupi może wiedzieć. Sedno to zrozumieć" - Albert Einstein

Tsubasa
Bywalec
Bywalec
Posty: 10
Rejestracja: 26 gru 2011, 11:52

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

Nieprzeczytany post autor: Tsubasa »

Spoko, ponabijaj się ze mnie, w końcu laik:)))))
Czyli sie nie da powiadasz, no trudno zrobiłem sobie odcinki z kropek <faja>
Chodź obszary widzialem kiedys w jakimś wskaźniku...

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

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

Nieprzeczytany post autor: Pierz Andrzej »

Tsubasa rysowanie odcinka mozesz zrobic za pozomca linii trendu z wylaczona opcja promienia ;)
z poważaniem
Andrzej Pierz
FOREX-SERVICE

Awatar użytkownika
sonixh
Stały bywalec
Stały bywalec
Posty: 57
Rejestracja: 13 sty 2011, 19:26

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

Nieprzeczytany post autor: sonixh »

A rysowanie obszaru zamkniętego za pomocą

Kod: Zaznacz cały

OBJ_RECTANGLE
? :wink:
jest taka ciekawa funkcja jak Print() , ktora zawsze zuywam jak cos mi nie bngla i Tobie tez proponuje to zrobic
Dzięki Andrzej. Pomogło. :564:
Obrazek

Awatar użytkownika
peter_r
Pasjonat
Pasjonat
Posty: 565
Rejestracja: 08 sty 2012, 11:09

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

Nieprzeczytany post autor: peter_r »

Hmm mam pytanie, mianowicie jak wywołam standardowo

Kod: Zaznacz cały

for(i=OrdersTotal();i>=0;i--){
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);     
if (OrderSymbol()==Symbol())  {
a następnie różne funkcje zarządzania SL'em i TP dla danej pozycji, to czy jeżeli w pierwszym warunku jeżeli (OrderStopLoss()==NULL) -> ustawię SL'a(OrderModify), to następny warunek będzie "wiedział" że order ma ustawionego stopa?
Czy jest jakaś funkcja żeby to odświeżyć?
Refreshrates chyba nie bardzo? Jak nie ma to najwyżej przerobię osobno tp osobno s i pętla 2 razy :x

martinii007
Bywalec
Bywalec
Posty: 10
Rejestracja: 17 sty 2010, 19:50

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

Nieprzeczytany post autor: martinii007 »

Witam,

Posiadam dostęp do konta na FX na którym są udostępniane sygnały (transakcje oczywiście są tam zabronione.). Nie mam zamiaru cały czas patrzeć w ekran, kiedy udostępniający sygnały otworzy pozycję.
Dlatego poszukiwałem wskaźnika, który informowałby mnie komunikatem dźwiękowym gdy zostanie otwarta pozycja.
Niestety nic takiego nie znalazłem i dlatego próbuję napisać taki wskaźnik, oczywiście mi to nie wychodzi :P

Chciałbym zmodyfikować wskaźnik price alert:

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                                   PriceAlert.mq4 |
//|                              Copyright © 2009, www.earnforex.com |
//|           Issues sound alerts when price reaches certain levels. |
//+------------------------------------------------------------------+
#property copyright "EarnForex.com"
#property link      "http://www.earnforex.com"

#property indicator_chart_window

extern double SoundWhenPriceGoesAbove = 0;
extern double SoundWhenPriceGoesBelow = 0;
extern double SoundWhenPriceIsExactly = 0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() 
{
   if (SoundWhenPriceIsExactly > 0)
   {
      ObjectCreate("SoundWhenPriceIsExactly", OBJ_HLINE, 0, Time[0], SoundWhenPriceIsExactly);
      ObjectSet("SoundWhenPriceIsExactly", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("SoundWhenPriceIsExactly", OBJPROP_COLOR, Yellow);
      ObjectSet("SoundWhenPriceIsExactly", OBJPROP_WIDTH, 1);
   }
   if (SoundWhenPriceGoesAbove > 0)
   {
      ObjectCreate("SoundWhenPriceGoesAbove", OBJ_HLINE, 0, Time[0], SoundWhenPriceGoesAbove);
      ObjectSet("SoundWhenPriceGoesAbove", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("SoundWhenPriceGoesAbove", OBJPROP_COLOR, Green);
      ObjectSet("SoundWhenPriceGoesAbove", OBJPROP_WIDTH, 1);
   }
   if (SoundWhenPriceGoesBelow > 0)
   {
      ObjectCreate("SoundWhenPriceGoesBelow", OBJ_HLINE, 0, Time[0], SoundWhenPriceGoesBelow);
      ObjectSet("SoundWhenPriceGoesBelow", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("SoundWhenPriceGoesBelow", OBJPROP_COLOR, Red);
      ObjectSet("SoundWhenPriceGoesBelow", OBJPROP_WIDTH, 1);
   }
   return(0);
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   ObjectDelete("SoundWhenPriceIsExactly");
   ObjectDelete("SoundWhenPriceGoesAbove");
   ObjectDelete("SoundWhenPriceGoesBelow");
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   if ((Ask > SoundWhenPriceGoesAbove) && (SoundWhenPriceGoesAbove > 0))
   {
      Alert("Price above the alert level.");
      PlaySound("alert.wav");
      ObjectDelete("SoundWhenPriceGoesAbove");
      SoundWhenPriceGoesAbove = 0;
   }
   if ((Bid < SoundWhenPriceGoesBelow) && (SoundWhenPriceGoesBelow > 0))
   {
      Alert("Price below the alert level.");
      PlaySound("alert.wav");
      ObjectDelete("SoundWhenPriceGoesBelow");
      SoundWhenPriceGoesBelow = 0;
   }
   if ((Bid == SoundWhenPriceIsExactly) || (Ask == SoundWhenPriceIsExactly))
   {
      Alert("Price is exactly at the alert level.");
      PlaySound("alert.wav");
      ObjectDelete("SoundWhenPriceIsExactly");
      SoundWhenPriceIsExactly = 0;
   }
return(0);
}
//+------------------------------------------------------------------+
Pomysł jest następujący: Wyciągnąć aktualnie wszystkie otwarte pozycje i zapisać je do zmiennych
SoundWhenPriceGoesAbove i SoundWhenPriceGoesBelow. Np. zostanie otwarta pozycja na poziomie 1.3100.
Gdy przekroczy górą albo dołem tę wartość wtedy pokaże się alert. Albo zrobić to na zmiennej SoundWhenPriceIsExactly.

Znalazłem w helpie funkcje, które mają mi w tym pomóc lecz nie za bardzo wiem jak z nich skorzystać :/

Kod: Zaznacz cały

if(OrderSelect(124, SELECT_BY_TICKET)==true)
{
Print("Cena otwarcia zlecenie #124 ", OrderOpenPrice());
Print("Cena zamknięcia zlecenia #124 ", OrderClosePrice());
}
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());


if(OrderSelect(124, SELECT_BY_POS)==true){
Print("Cena otwarcia zlecenia #124 ",OrderOpenPrice());
}
else
Print("Błąd wykonania funkcji OrderSelect ",GetLastError());

Awatar użytkownika
Midas
Pasjonat
Pasjonat
Posty: 1380
Rejestracja: 19 gru 2008, 14:43

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

Nieprzeczytany post autor: Midas »

Witam,

Nie znam się na programowaniu nawet w 0.000001%, a w dodatku pierwszy raz piszę w tym dziale..

Założyłem temat w dyskusjach ogólnych - http://forex-nawigator.biz/forum/pomocy ... 21887.html

Jak na razie nikt mi nie odpowiedział a już trochę minęło dlatego piszę tutaj. Czy ktoś ma wskaźnik, który pokazywał by maksymalną wielkość lota jaką mogę otworzyć na danej parze biorąc pod uwagę obecny balance konta?

Albo może ile marginu zjada 0.01 lota na danej parze?

Jeżeli czegoś takiego nikt nie ma to może dałoby radę coś takiego napisać? (Jeszcze raz piszę, że ja po prostu nie mam zielonego pojęcia o programowaniu, nie wiem czy da się coś takeigo zrobić a co dopiero JAK to zrobić :P)

Byłbym wdzięczny jeśli ktoś by mi pomógł.

Pozdrawiam, Midas

Online
Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

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

Nieprzeczytany post autor: personov »

Kod: Zaznacz cały

void init()
{ }
///////////////////////////////////////////////////////////////////////
void deinit()
{}
///////////////////////////////////////////////////////////////////////
void start()
{ double lot=MathFloor(AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/MarketInfo(Symbol(),MODE_LOTSTEP))*MarketInfo(Symbol(),MODE_LOTSTEP);
 Comment
   (
   "\n"+
   "maksymalny wolumen "+lot
   );
      }
Załaduj to jako EA. W lewym górnym rogu wykresu wyświetli Ci maksymalny wolumen.

-- Dodano: pt 05-10-2012, 21:35 --

A jeśli nie wiesz jak z tego kodu zrobić EA to zapisz go do notatnika i zmień końcówke z .txt na .mq4
Solą życia jest kasa.

ODPOWIEDZ