OK, jadi saya dapat membuat EA yang boleh mengendalikan modul serentak dengan parameter dagangan yang berbeza yang boleh dijalankan pada masa yang sama atau ditanggalkan dan dimatikan. Walaupun saya berlari ke dinding dengan pengendalian kiraan pesanan.
Saya ingin mempunyai jumlah EA MaxTotalPositions terhadap Jumlah Jawatan untuk ModuleA dan Jawatan Jumlah untuk ModuleB. EA tidak boleh melebihi Max Total (A = B), tetapi juga tidak boleh melebihi TotalforModuleA dan B masing-masing. Sebagai contoh, jika MaxTotal adalah 2, dan jumlah ModuleA dan B adalah satu, maka ia tidak boleh melebihi 2. Bahagian ini mudah. Walau bagaimanapun, jika Max adalah 2, dan ModuleA adalah 1, ia masih berdagang sehingga 2. Saya telah cuba memanggil pesanan dengan sihir untuk menjadikannya lebih mudah untuk dikira tetapi di mana ia melebihi jumlah MaxPerModule. Adakah sesiapa mempunyai idea untuk mendekati ini? Kod ini dikompilkan dengan betul supaya tiada ralat sintaks. Inilah bahagian kod tersebut:
/////////////////////////////////////////////////////////////////////////////
TotalMaxPositions diisytiharkan secara global di bahagian atas EA sebagai pemboleh ubah luar
extern double TotalMaxPositions = 2;
//////////////////////////////////////////////////////////////////////////////
//------------------------------------------------ -
//MAX POSISI ORDER COUNT
//------------------------------------------------ -
int TotalCurrentOrders;
int count = 0; int count = 0; jumlah int; int totalB;
TotalCurrentOrders = OrdersTotal ();
jika (TotalCurrentOrders gt; = TotalMaxPositions) kembali (0);
lain
jika (TotalCurrentOrders lt; TotalMaxPositions)
{
jika (countA gt; = MaxPositionsA) kembali (0);
jika (mengira lt; MaxPositionsA)
untuk (int posA = 0; posA lt; totalA; posA )
{
jika (OrderSelect (posA, SELECT_BY_POS) == palsu) terus;
jika (OrderMagicNumber () == MagicA) countA ;
}
jika (countB gt; = MaxPositionsB) kembali (0);
jika (countB lt; MaxPositionsB)
untuk (int posB = 0; posB lt; totalB; posB )
{
jika (OrderSelect (posB, SELECT_BY_POS) == palsu) terus;
jika (OrderMagicNumber () == MagicB) countB ;
}
jika (TotalCurrentOrders gt; = TotalMaxPositions) kembali (0);
}