Bantu dengan Logik
Halaman 1 daripada 1133 123 TerakhirTerakhir
Results 1 to 10 of 21

Thread: Bantu dengan Logik

  1. #1
    Hai semua,

    Saya hampir melalui proses membina Little Big Man EA, tetapi saya terjebak pada titik logik.

    Saya telah melampirkan kod saya di bawah seperti yang anda lihat, dan ini semua dalam fungsi Martingale ().

    Titik keseluruhan EA ini adalah untuk mengambil kemenangan kecil, apabila kemenangan kecil terjebak (stragglers), maka saya akan memperlihatkan dari mereka pada 200 (atau 'X') pip dari harga masuk.

    Saya mempunyai persediaan logik saya secara lalai sebagai setiap 200 pip, perdagangan akan ditutup, maka perdagangan baru akan dibuka di tempatnya 1.5 kali didarab.

    Oleh itu, saya telah mengambil keuntungan mengambil BE untuk perdagangan yang hilang itu. Walau bagaimanapun:

    1) Pengiraan tidak berfungsi dengan baik kerana saya hanya mendapat 15.50 kembali selepas 20.00 kerugian pada tahap pertama;

    2. Saya tidak dapat mengambil semula jika ia pergi ke pelbagai tahap. L2 dimasukkan pada 200 pip dan akan menjadi .02 lot, L3 dimasukkan 400 pips dan akan menjadi .03 banyak, L4 dimasukkan pada 600 pips dan .05 lot dan lain-lain. Ia tidak semestinya hampir pulih.

    Bolehkah seseorang membantu saya dengan cara untuk melakukan ini. Terima kasih.

    Berikut adalah versi ringkas mengenai apa yang saya ada setakat ini:

    NewMultiplierTakeProfit = ((OrderOpenPrice () * OrderLots ()) (Ask * NewLotSize))((OrderLots () NewLotSize));/Calculate new take profit

    Inserted Code/ ------------------------------------------------------------------ /| REAV_EA.mq4 | /| Copyright © 2010, Kenny Hubbard | /| http://www.compu-forex.com | / ------------------------------------------------------------------ #property copyright Copyright © 2010, Kenny Hubbard #property link http://www.compu-forex.com #define NO_RESULT -10 extern int MagicNumber = 100; extern double Eq_StopLoss = 10000; extern double Risk = 0.01; extern double Trail_From = 8; extern double Trail_Max = 50.0; extern double Trail_Percent = 20; extern double Grid_Size = 13; extern int MinimumReEntry = 200; extern double Multiplier = 1.5; extern int MinimumProfit = 1; int D_Factor = 1, LotDigits = 1, Slippage = 3, Retries = 10; double Anchor, Pip, Grid_Min = 0, Grid_Max = 0, Grid_Ord_OpenPrice#91;#93;#91;2#93;, Auto_Grid, NewMultiplierTakeProfit = 0, NewLotSize = 0; string Order_Cmt = Little Big Man EA; / ------------------------------------------------------------------ /| expert initialization function | / ------------------------------------------------------------------ int init() { Pip = Point; /---- if (Digits == 3|| Digits == 5){D_Factor = 10; Pip *= 10;} Grid_Size *= Pip; if (MarketInfo(Symbol(),MODE_LOTSTEP) == 0.01)LotDigits = 2; Auto_Grid = Grid_Size; if(MinimumProfit == 0){MinimumProfit = 1;} /---- return(0); } / ------------------------------------------------------------------ /| expert deinitialization function | / ------------------------------------------------------------------ int deinit() { /---- /---- return(0); } / ------------------------------------------------------------------ /| expert start function | / ------------------------------------------------------------------ int start() { int result = NO_RESULT; /---- if (!OrdersTotal()){ Print(Making an initial trade); OrderSend(Symbol(), 4, Get_Lots(Risk), NormalizeDouble(Ask Auto_Grid,Digits), Slippage, 0 ,0 ,Order_Cmt, MagicNumber, 0, Blue); OrderSend(Symbol(), 5, Get_Lots(Risk), NormalizeDouble(Bid-Auto_Grid,Digits), Slippage, 0 ,0 ,Order_Cmt, MagicNumber, 0, Blue); } Update_Grid(Grid_Min, Grid_Max); result = Check_For_Trade(Grid_Min, Grid_Max); if(result!=NO_RESULT)Do_Trade(result); Trail_Stop(); Martingale(); double BuyLevel = (Bid - (MinimumReEntry * Pip)); double SellLevel = (Ask (MinimumReEntry * Pip)); Comment(Buy Level: , (BuyLevel), \n, Sell Level: , (SellLevel), \n, Bid :, Bid, \n, Ask :, Ask, \n, Minium Reentry: , MinimumReEntry, \n /Point: , NormalizeDouble(MinimumReEntry*Point,10),\n, /Pip: , NormalizeDouble(MinimumReEntry*Pip,10) ); /---- return(0); } / ------------------------------------------------------------------ void Martingale()/Function to remove existing straggler orders { for(int xo = 0; xo lt; OrdersTotal(); xo ) { if(OrderSelect(xo,SELECT_BY_POS)) { RefreshRates(); if(OrderType() == 0) { if(OrderOpenPrice() gt;= (Bid (MinimumReEntry * Pip))) { NewLotSize = Multiplier * OrderLots(); NewMultiplierTakeProfit = ((OrderOpenPrice() * OrderLots()) (Ask * NewLotSize))((OrderLots() NewLotSize));//Calculate new take profit if(OrderClose(OrderTicket(),OrderLots(),Ask,99,Red )) { OrderSend(Symbol(), 0, NormalizeDouble(NewLotSize,LotDigits), Ask, Slippage, 0 , NormalizeDouble((NewMultiplierTakeProfit (MinimumProfit*Pip)),10) , Multiplied Order, MagicNumber, 0, Blue); } } } if(OrderType() == 1) { if(OrderOpenPrice() lt;= (Ask - (MinimumReEntry * Pip))) { NewLotSize = Multiplier * OrderLots(); NewMultiplierTakeProfit = ((OrderOpenPrice() * OrderLots()) (Bid * NewLotSize))(OrderLots() NewLotSize);//Calculate new take profit if(OrderClose(OrderTicket(),OrderLots(),Ask,99,Red )) { OrderSend(Symbol(), 1, NormalizeDouble(NewLotSize,LotDigits), Bid, Slippage, 0 , NormalizeDouble((NewMultiplierTakeProfit-(MinimumProfit*Pip)),10) , Multiplied Order, MagicNumber, 0, Blue); } } } } } } / ------------------------------------------------------------------ void Update_Grid(double Min, double Max) { int Order_Cnt=0, Grid_Num = 0; for(int i=0;ilt;OrdersTotal();i ){ if(OrderSelect(i,SELECT_BY_POS)){ if(OrderType()gt;3)Order_Cnt ; } else Print(Error Selecting Order = GetLastError()); } ArrayResize(Grid_Ord_OpenPrice,Order_Cnt); ArrayInitialize(Grid_Ord_OpenPrice,0.0); for(i=0;ilt;OrdersTotal();i ){ if(OrderSelect(i,SELECT_BY_POS)){ if(OrderType()gt;3){ Grid_Ord_OpenPrice#91;Grid_Num#93;#91;0#93; = OrderOpenPrice(); Grid_Num ; } } else Print(Error Selecting Order = GetLastError()); } ArraySort(Grid_Ord_OpenPrice); Min = Grid_Ord_OpenPrice#91;0#93;#91;0#93;; Max = Grid_Ord_OpenPrice#91;Order_Cnt-1#93;#91;0#93;; } / ------------------------------------------------------------------ int Check_For_Trade(double Min, double Max) { if(Ask gt;= Max Auto_Grid)return(OP_BUYSTOP); if(Bid lt;= Min - Auto_Grid) return(OP_SELLSTOP); return(NO_RESULT); } / ------------------------------------------------------------------ void Do_Trade(int Buy_or_Sell) { switch(Buy_or_Sell){ case OP_BUYSTOP: int ticket = OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(Get_ Lots(Risk),LotDigits),NormalizeDouble(Ask Auto_Grid,Digits), Slippage,0,0,Order_Cmt,MagicNumber,0,Green); Delete_Opposite_Trade(5); ticket = OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(Get _Lots(Risk),LotDigits),NormalizeDouble(Bid - 2 * Auto_Grid,Digits), Slippage,0,0,Order_Cmt,MagicNumber,0,Red); break; case OP_SELLSTOP: ticket = OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble(Get _Lots(Risk),LotDigits),NormalizeDouble(Bid - Auto_Grid,Digits), Slippage,0,0,Order_Cmt,MagicNumber,0,Red); Delete_Opposite_Trade(4); ticket = OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble(Get_ Lots(Risk),LotDigits),NormalizeDouble(Ask 2 * Auto_Grid,Digits), Slippage,0,0,Order_Cmt,MagicNumber,0,Green); break; default : Alert(Unknown ordertype returned); break; } return; } / ------------------------------------------------------------------ void Delete_Opposite_Trade(int Del_B_S) { for(int i=0;ilt;OrdersTotal();i ){ OrderSelect(i,SELECT_BY_POS); if(OrderMagicNumber() == MagicNumber){ if(OrderType() == Del_B_S)OrderDelete(OrderTicket()); } } } / ------------------------------------------------------------------ double Get_Lots(double lRisk) { double Lots = AccountEquity() * lRisk/100/1000; if (MarketInfo(Symbol(),MODE_MINLOT) gt; Lots)Lots = MarketInfo(Symbol(),MODE_MINLOT); if (MarketInfo(Symbol(),MODE_MAXLOT) lt; Lots)Lots = MarketInfo(Symbol(),MODE_MAXLOT); return(Lots); } / ------------------------------------------------------------------ bool Trail_Stop() { bool mod, lresult = false; double My_Profit, My_Trail, My_SL, lTrail_Max, lTrail_From, Stop_Level; /---- for (int i = 0; i lt; OrdersTotal(); i ){ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber() == MagicNumber) { RefreshRates(); /****************************** HARDCODED FOR NOW UNTIL BETTER SOLUTION, TO .01 LOTS, FOR UNDER 10K ACCOUNT IT WORKS!************************* if(OrderLots() lt; 0.02) { lTrail_Max = Trail_Max * Pip; lTrail_From = Trail_From * Pip; Stop_Level = MarketInfo(OrderSymbol(),MODE_STOPLEVEL)*Pip; switch(OrderType()){ case OP_BUY : My_Profit = Bid - OrderOpenPrice(); My_Trail = MathMin(My_Profit * Trail_Percent/100,lTrail_Max); My_SL = NormalizeDouble(OrderClosePrice()-My_Trail,Digits); lresult = true; if(My_Profit gt; lTrail_From){ if(OrderClosePrice() - My_SL gt; Stop_Level){ if(OrderStopLoss() lt; My_SL||OrderStopLoss() == 0)mod = OrderModify(OrderTicket(),OrderOpenPrice(),My_SL,O rderTakeProfit(),0, CLR_NONE); } } break; case OP_SELL : My_Profit = OrderOpenPrice() - Ask; My_Trail = MathMin(My_Profit * Trail_Percent/100,lTrail_Max); My_SL = NormalizeDouble(Ask My_Trail,Digits); lresult = true; if(My_Profit gt; lTrail_From){ if(My_SL - OrderClosePrice() gt; Stop_Level){ if(My_SL lt; OrderStopLoss()||OrderStopLoss() == 0)mod = OrderModify(OrderTicket(),OrderOpenPrice(),My_SL,O rderTakeProfit(),0,CLR_NONE); } } break; } if(!mod GetLastError() gt; 1)Print(Error entering Trailing Stop - Error GetLastError()); } } } else Print(Error selecting order); } /---- return(lresult); }

  2. #2
    Quote Originally Posted by ;
    Hi Gil, Tidak pasti jika ini membantu tetapi mencubanya. Beberapa mata yang anda mungkin tahu: - Berhati-hati menggunakan OrdersTotal () secara langsung dalam gelung yang melibatkan mengubah bilangan pesanan kerana ini akan menyebabkan huru-hara dalam hidup anda di beberapa peringkat di jalan. Ia membuat bug yang boleh menjadi sangat sukar untuk dicari. Sebab untuk ini adalah jika anda mempunyai gelung yang terhitung dari ...
    Kenny, terima kasih banyak. Million times over. Ya, saya fikir logik saya agak seperti anda, tetapi tidak betul. Saya rasa jika anda hanya mengeja ia, maka masuk akal, tetapi memasukkannya ke kod tidak kadang-kadang kelihatan begitu mudah.
    Saya faham apa yang anda katakan tentang jumlah pesanan dan lain-lain. Membuat rasa. Ia telah 10 tahun sejak saya digunakan untuk program APAPUN, jadi sarang laba-laba itu perlahan-lahan hilang!
    Saya tidak dapat melakukan ini tanpa anda lelaki! Biarkan saya mengetepikan ini dan memasukinya. Aloha! P.S. Saya mungkin mempunyai satu soalan lain untuk anda jika anda mempunyai masa bagaimana anda akan melakukannya? Saya telah membuat beberapa cara, tetapi tidak pasti saya melakukannya dengan betul. Bagaimanakah anda menubuhkan grid dalam logik asas untuk memeriksa pesanan sedia ada dalam 15 pip, kemudian menggerakkan grid 15 pip? Saya akan meletakkan kod saya sendiri dan melihat apa yang anda fikirkan, tetapi cara anda melakukannya Saya mempunyai perasaan bahawa saya akan membuat lebih banyak masalah maka apa-apa, tetapi akan memakannya! Tiada bahaya, tidak busuk!

  3. #3

    Quote Originally Posted by ;
    P.S. Saya mungkin mempunyai satu soalan lain untuk anda jika anda mempunyai masa bagaimana anda akan melakukannya? Saya telah membuat beberapa cara, tetapi tidak pasti saya melakukannya dengan betul. Bagaimanakah anda menubuhkan grid dalam logik asas untuk memeriksa pesanan sedia ada dalam 15 pip, kemudian menggerakkan grid 15 pip?
    Hi Gil, saya pasti anda akan mendapati bahawa tidak ada cara yang betul untuk melakukan perkara-perkara ini .... jika salah satu cara anda telah menghasilkan karya anda mesti lari dengannya. Anda sentiasa boleh menyemak semula rutin kemudian dan anda akan sering mencari cara untuk memperbaiki tetapi aturan pertama saya sentiasa melakukan apa yang berfungsi. Bagaimanapun, saya secara peribadi akan memuat OrderOpenPrices menjadi array dan hanya memeriksa setiap satunya sebaliknya dengan harga semasa. Salah satu sebab untuk pendekatan ini adalah kerana jika anda menyemak fungsi Update_Grid, pesanan sudah dimuatkan ke dalam array, jadi saya hanya akan memperluaskan rutin itu. Saya melihat apa yang anda lakukan dengan TakeProfit sekarang ...... Saya hanya melihat kehilangan dari perdagangan lepas sahaja. Kaedah anda lebih banyak dipatuhi. Saya tidak boleh memikirkan formula dari tangan ..... Saya perlu memikirkan perkara ini. Sekiranya anda ingin menjadikannya mudah, gunakan pembolehubah yang menambah kerugian dari stragglers dan kemudian tukar kepada jumlah pips TP berdasarkan jumlah pemulihan semasa. Masalah utama ialah mengetahui kerugian yang didasarkan pada loteri terkini. Anda perlu menyimpan kemajuan, atau mengiranya. Ia mudah untuk melihat bahawa 15 lot memecah kepada 1 2 4 8 tetapi satu lagi perkara untuk mengiranya.
    Quote Originally Posted by ;
    Saya masukkan dalam bahagian init () seksyen kod berikut: MinimumReEntry * = Pip; MinimumProfit * = Pip;
    Anda telah mengisytiharkan ini sebagai bilangan bulat, jadi ubahlah itu untuk menggandakan. Mungkin atau mungkin tidak menyelesaikan masalah ini, tetapi mulakan dengan bug yang jelas terlebih dahulu.
    Quote Originally Posted by ;
    Saya faham apa yang anda katakan tentang jumlah pesanan dan lain-lain. Membuat rasa.
    Dengan risiko tersumbat kuda mati, saya hanya perlu menunjukkan kesilapan di pihak saya. Cara saya melakukannya dengan gelung pesanan mengira ke bawah, adalah baik untuk menggunakan OrdersTotal () kerana anda memberikan nilai pada permulaan gelung dan tidak menggunakannya sebagai syarat. Jika anda mengira dari 0 maka anda perlu memberikan pemboleh ubah perantaraan untuk memastikan statistik pesanan itu statik. Saya fikir ini sebabnya mereka selalu mengatakan bahawa amalan yang baik untuk mengira gelung pesanan anda bukannya naik. Dengan itu anda boleh memadam pembolehubah Total_Orders kerana ia membuang masa dan ingatan. Satu lagi bug yang saya buat (tidak berkaitan dengan perbincangan ini) ....... Grid_Min dan pembolehubah Grid_Max harus diisytiharkan dalam fungsi Start () tidak di bahagian global.

  4. #4
    Quote Originally Posted by ;
    Saya perlu memikirkan perkara ini. Sekiranya anda ingin menjadikannya mudah, gunakan pembolehubah yang menambah kerugian dari stragglers dan kemudian tukar kepada jumlah pips TP berdasarkan jumlah pemulihan semasa. Masalah utama ialah mengetahui kerugian yang didasarkan pada loteri terkini. Anda perlu menyimpan kemajuan, atau mengiranya. Ia mudah untuk melihat bahawa 15 lot memecah kepada 1 2 4 8 tetapi satu lagi perkara untuk mengiranya.
    Kenny, ini mungkin lebih dari kepala matematik saya. Tetapi, apa yang anda fikirkan tentang sesuatu seperti: Void CalculatePreviousLosses (NewLotSize) {Loop down through NewLotSizeMultiplier sehingga mencapai StartingLotSize (fungsi Get_Lots), menghitung setiap kali ketika anda gelung, anda mengalikan setiap satu oleh MinimumReEntry untuk mendapatkan total kerugian anda pembolehubah kemudian: Kembali (TotalNumberOfPipsLost); } Saya akan memberikan percubaan itu, tetapi saya tidak pasti pengaturcaraan saya akan betul.
    Quote Originally Posted by ;
    Bagaimanapun, saya secara peribadi akan memuat OrderOpenPrices menjadi array dan hanya memeriksa setiap satunya sebaliknya dengan harga semasa. Salah satu sebab untuk pendekatan ini adalah kerana jika anda menyemak fungsi Update_Grid, pesanan sudah dimuatkan ke dalam array, jadi saya hanya akan memperluaskan rutin itu.
    Ya, itulah yang saya fikirkan juga. Saya tidak digunakan untuk bekerja dengan tatasusunan dalam bahasa ini, jadi saya akan menghadapi percubaan dan kesalahan beberapa. Harus bersenang-senang.

  5. #5
    Gil, Yup, yang kelihatan seperti anda berada di landasan yang betul. Anda mungkin lebih mudah mendapatkan rumus yang betul dalam sesuatu seperti MS Excel terlebih dahulu. Sebaik sahaja anda mempunyai formula yang betul, perlaksanaan harus cukup mudah. Saya tidak akan terlalu berpeluh mengenai tatasusunan. Sebahagian besar barangan sudah ada ..... anda hanya perlu memikirkan cara membaca array. Oh, dan satu lagi ..... OrdersTotal () gelung lagi ...... perlu bermula di OrdersTotal () -1. Saya baru sahaja tidur malam bodoh. Hanya berteriak jika anda mempunyai sebarang pertanyaan.

  6. #6
    Hi Gil, kelihatan baik. Anda seolah-olah mempunyai bakat untuk ini. Mungkin terdapat ralat kecil di suatu tempat ..... Saya akan mencadangkan melihat rutin CalculatePreviousLosses dan menggunakan perintah Cetak untuk menulis pembolehubah ke tab Pakar untuk diperiksa. Cara itu dapat melangkah masuk ke dalam nilai-nilai mereka dan melihat apa yang dilihat oleh komputer. Ia juga mungkin bahawa kod itu 100% betul dan percanggahan datang dengan pertukaran dan komisen, tetapi percanggahan anda kelihatan agak besar untuk ini.

  7. #7
    Quote Originally Posted by ;
    Hi Gil, kelihatan baik. Anda seolah-olah mempunyai bakat untuk ini. Mungkin terdapat ralat kecil di suatu tempat ..... Saya akan mencadangkan melihat rutin CalculatePreviousLosses dan menggunakan perintah Cetak untuk menulis pembolehubah ke tab Pakar untuk diperiksa. Cara itu dapat melangkah masuk ke dalam nilai-nilai mereka dan melihat apa yang dilihat oleh komputer. Ia juga mungkin bahawa kod itu 100% betul dan percanggahan datang dengan pertukaran dan komisen, tetapi percanggahan anda kelihatan agak besar untuk ini.
    knack..hmmm ... Saya tidak tahu ... tapi saya menghabiskan banyak masa.
    Terima kasih. Saya akan buat cetakan dan lihat, belum buat itu lagi. Terima kasih kerana membimbing saya. Saya fikir ia adalah tepat pada lelaran yang lebih kecil, tetapi apabila ia dikatakan Tahap 4 dan ke atas, ia mula mendapat sedikit perkadaran, tetapi ia mungkin bertukar mungkin .... Saya 'a' rapat.

  8. #8
    Kenny, Jika anda boleh begitu baik juga untuk membimbing saya tentang bagaimana untuk mendapatkan sekitar logik pada rutin pengurusan wang dengan martingale. Sebagai contoh, rutin MM memilikinya sehingga ia meningkat dengan lebih banyak ekuiti (yang bagus), namun, ia akan membuat terlalu banyak kedudukan, jadi saya menambahkan 0 kepada itu sehingga sekarang .01 = 10,000, yang mana lebih sesuai dengan apa yang saya mahu. Walau bagaimanapun, apabila saya menubuhkan stop trailing saya mengetik kod keras anda untuk mengatakan jika kurang daripada .02 lot kemudian melakukan jejak. Bagaimanapun, itu tidak menjadikan kerja MM terlalu baik ...? Jadi ... Idea saya, sila tunjuk saya ke arah yang terbaik yang anda fikirkan. - Tambah penapis komen ke pesanan, kemudian penapis TS dengan penapis itu. Saya sebenarnya sudah mempunyai komen Pesanan Berbilang ini untuk pesanan yang telah ditetapkan, jadi saya hanya boleh menyaring pada itu, tetapi tidak pasti sama ada amalan pengkodan yang baik? - Masukkan beberapa logik yang akan dieksport dengan rutin getLots yang mengenalpasti saiz lot permulaan. Walau bagaimanapun, jika terdapat banyak .02 lot untuk martingale dan ekuiti hits 20K dan sekarang lot permulaan adalah .02, akan ada kekeliruan .. - sebarang idea lain ....? Terima kasih sekali lagi dan saya berharap saya tidak mengambil terlalu banyak masa anda.

  9. #9

    Quote Originally Posted by ;
    Walau bagaimanapun, jika ada .02 lot lama untuk martingale dan hits ekuiti 20K dan sekarang lot permulaan adalah .02, akan ada kekeliruan ..
    Mampu meramalkan masalah seperti ini adalah apa yang saya maksudkan dengan kebolehan. Tempat yang baik. Saya tidak akan berkeringat walaupun ...... tiba masa ketika anda perlu memilih antara kesempurnaan dan kepraktisan. Dalam kes ini, kes yang paling teruk adalah kitaran yang ditutup dengan kerugian kecil dan bukan keuntungan yang kecil. Arrayan tidak berubah dalam 10 tahun, jadi anda perlu pergi. Sekadar tip, anda perlu menambah elemen lain untuk nombor tiket, kerana sistem ini hanya menyimpan harga terbuka. Terdapat 2 cara ..... sama ada mengisytiharkan pelbagai dimensi tunggal baru seperti: - int Grid_Ord_Ticket [] atau anda boleh memperluas array yang sedia ada (sesungguhnya saya hanya menyedari saya tidak perlu menggunakan array 2 dimensi dalam yang pertama tempatnya), jadi anda boleh menggunakan tahap kedua Grid_Ord_OpenPrice yang ada [] [2] Saya yakin dari pengalaman anda yang lalu anda akan tahu bahawa anda menghabiskan pengkodean 10% dan debugging 90%. MQL4 adalah mimpi buruk yang terburuk dalam hal ini, kerana tidak ada penghubung untuk membantu anda. MQL4 selalunya membolehkan anda melakukan sesuatu yang salah tetapi tidak akan memberitahu anda ...... contoh yang baik ialah apabila anda mengisytiharkan orang-orang beregu sebagai bilangan bulat. Persekitaran runtimedebugger yang baik akan memberitahu anda bahawa anda cuba memberikan nombor titik terapung kepada pembolehubah integer ..... bukan MQL4, ia hanya akan memutar nombor dan menjalankan, memberikan anda output yang tidak dapat diprediksi. Alat yang terbaik adalah perintah Cetak yang saya gunakan untuk memeriksa pembolehubah dan juga kadang-kadang hanya sebagai penanda program, jadi saya tahu fungsi telah dilaksanakan. Anda juga boleh menggunakan Comment () dan kemudian menjalankan backtest visual tetapi saya fikir Print lebih mudah. Ingat untuk menghapusnya sebagai Print adalah item tunggal yang paling besar yang mempengaruhi kelajuan pelaksanaan (bersama dengan output skrin).

  10. #10
    Quote Originally Posted by ;
    Mampu meramalkan masalah seperti ini adalah apa yang saya maksudkan dengan kebolehan. Tempat yang baik. Saya tidak akan berkeringat walaupun ...... tiba masa ketika anda perlu memilih antara kesempurnaan dan kepraktisan. Dalam kes ini, kes yang paling teruk adalah kitaran yang ditutup dengan kerugian kecil dan bukan keuntungan yang kecil. Arrayan tidak berubah dalam 10 tahun, jadi anda perlu pergi. Sekadar tip, anda perlu menambah elemen lain untuk nombor tiket, kerana sistem ini hanya menyimpan harga terbuka. Terdapat 2 cara ..... sama ada mengisytiharkan pelbagai dimensi tunggal ...
    Seperti yang kita katakan di Hawaii (di mana saya pernah hidup), Anda da kine brah!
    Akan pergi!

Kebenaran Posting

  • Anda tidak boleh menghantar thread baru
  • Anda tidak boleh membalas kiriman
  • Anda tidak boleh mengedit siaran anda
  • Anda tidak boleh menyiarkan lampiran
  •  
  • Kod BB Hidup
  • Smilies Hidup
  • Kod [IMG] adalah Hidup
  • Kod [VIDEO] adalah Hidup
  • Kod HTML Tidak Hidup
Polisi Kuki
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.