1011000100110110110100101111100010101100101011100110101001000001110000011111001011101100010101110110111011101111101101000010101011100000101010111000111011110011111110010110000010000110000000000100000011001011000011011111111001000111011111010000100001001010001001100111001110100110110011010110100011001000011011110000000100011001100101101010100101001110110001001101010011010011110111110011011011000100 1100001000111001011100011100001111111010111101110000000011000110100100001110010100000111110100010101110110100000010110100111110101100001110110111010000111000111011101010010100101001001001111000111101111010010110100001000000011001001001101011111011000011111110110100111101111001110101110000001101100111110001101100100101000110001111010001010010011010111000110111111100111000001111100001100100010111100 1010101011110000000010011101101111110011100110100101001000001100101001101101000111010000010010010101100010010110100011110010111000001001110010001111100101101110011000101110110000100110010000001000101100110000101100100111111100000100010011000111110001110011101010110000011111011110101000001111100101101100101011000001110101011001000010110110111000011100100101010000001001111010011010011101010110010111 1110110001000110110010110001011110000111101010000110011011100010101010011101000011101010001111100000011011011001100100001111010100000000111111010101101010101000110000110001100000000100011100100100110110010111100011110111000100001100100110101000111001011101001101100101110110100011111001111100101100110101011010010111000110010010001110000000111110111111100101110011001111001100111100001110101000000001 0111101000010110111100100000101100011001010011010010100001100001000111111100101110010001000111011110111010111101000010001000110000010010000000101010011001110100000110000110101001011010101000010011111110100110110110111111001010100100110100111001011011111100000111011111011000000011101010000001001101100110101100101100010111111111111110001101111111100001110011001111010101000100000111111110110000010110 0101001000000110000010111111110100011101010010000010101111100111010010110101011000011101101001000111010011110010110101110100101110110110100101111011101000011011000000101000111110100011010111100101001000001010111110110001010101101101101011011111111111100111110110111010100001010011100100111000100001101100100001101010111011110100011001011111000110101100110110010000111010110111011110011110110101011111 0011011011010101100100001011010011110000110000110010001110100011001100010111101000001111100100011110000101011110101010110000100101011101011100010001111110011010111111010111011110100111111101010001101110001011010100101101110111100010101001100101111010011100111001001010001111000000101101000011101100111001111100000010000111100111000010111101000001010100010010001000110100011011100101111111001000100010 0001101011000001010100110000111001111010010010011000001110101101000111110010110011011011101001010000010001010100010100110010010011010110101101111011010101001000111111010010101110111011100100000010010001111111101010000001000101011000010010101111001110100111010100011110100001100111111111110101011010110101101001000101011011111101110101111110111000001111111010111100111001010100000100000100000101011100 1101000011000010100001101000001100000011110001010001001110000111011000010101000111010010101110101010110100100100011001001010101110100011110010010001111001101110100101111100100111111111111101011000110000110010000001111000110100101001000000111000001100111010000001101100000110101101100111110100000111100011010000101110000101000001111100000100000111010010111000000101100100011010111110001110000100001011 0001000000101011111100001010001111101100000101110101101011100010111111010001001101111111111111001100110000011001110110001110101101110001010010001111011010000010000010010101001011010101011110101100000110011001110111001111010001101011111010101000110001100001111101000011011000101000111000010110111010011111010000111100001101101110011011111011000110010011010111100001111011000111101100101100111110001010 1111000011010110011001110100110000010010000101100001000001100010011001100001101011101101010011011011000001010110100111111011000101111010001110101000011110000001100100010110000100000010101010101111101100000001111010100100010100000111000000011001110010011100010010110101010101101010011111100110011110101110110110011101100001000101011010101100111010010101001101111011001001010111011010001001011100010101 0100011011000011010100100010100011000110000001010001111100111101010101111000111101100000011101111101101110111111001001111011111011100000100101111111011110011100010110011110111110101111010011110001111011010100111111000111101111011001100100011110110100001011110000011000100010000110001100111010011100011111101110010111001001001111100101011001110001001110111111010111110010011110100100101010010001001100 0011010100000011111001001010101111001000001011101110000000010001001100010101101101001100101110000010011010110110001011111111000000100111010110100001001001110001100101010010110011001101001111100110001010000111111010000100011111000000011110111100100100010101001111100111111100010101111111111101100011001101000010101100011110010110110011010001101010010000110011001011110110001010111110100111000110010011 0111100111011110110000001011001000110010100011010101110011101101001111101101111111111101100110001110101010010011111101011100111101100011000010100110110110010111110101011011001010001111010001010010011000111011001111111100100011101101101101010001011010111101000110110001011010101110000100111111000011101001111100111011010110111011101111110100000000111000001000101001100011011101000001010101100101110111 0100000101010111010111000110110110001000101110110010010111000111000000010010000100100001000001001110001110010111011010100110101001011010110111000000110010010011001101000100100011011010011110010011101111011001101100010010111001110101001000110111111100000001111101111100000011000010110011100111011001111010100100110001101101100110110110100010010100110101010001011000011000110111110101101100011111010010 1111110001100100010100011010110110100001001001111000100010001011101111100001010111001111110010010111011100000001110010000011111000011011010110110010101011111110011010101000001110100110111111111100000001001010001100010010001101101111101000110000001111010001000111010110110001011110100110000101000000011101110000111001100010100010001001011000111111101100010111101101111111000001100111101010001000000100 1001100001010010010000111110010000011010100011001001000111110001111110110000010011000100111101011000101111001100100101000100111100000110101101010110111001111101101001101110000110001101010100000111111000110000100111101010010000011100010100110010101000101000000000110111011101100110100101100111000100110010001100110011101111000110101010000000110100101100101010101011010110001001011000010010000000111010 1000010110001111011011001110111101000011011110010001010011101110000001111010100010101101110110110011001100000111110110111100000101010000100000001001111001111011100000101010100001011000101010100001011001101110000011000010000000110100010001111010000110001000111001110011101001011100001100011101111011110000001001011110110011011110100011101111111101001101000101011000110110101100011001100111011010011010 1100011101000010001011011000101011010010011100110101101000000000000000100011000101000101100001110000101000011111100010111011011011100100111111001000001111010111000100010110101111110111100011000111000010110000111010111110000011010101000001001011000101101110101000100010001011111000111100110010000100011011010011001101110101110110110110010110101010001001100001001111011111100000000000110000111100100000 1100101100101011100111000001111001101010101001001101011101101110111000101000101100111001110100110001010000111101001000000000001000101010101000010001011100111110011100111110101111110110010111011100101011011101000100000011011110111010000110001111100111011101101101001001101110011111001111110110111001111000111010000010010011100010011011100111100000001000101100101110000111010111100001001111110101011000 0001110111110010001000001101001100000111111110010001111110101010010001000000011101000100101011011011000001010101010100011001010010110011101111011100111001011001000100101001011110010010101011110011011100000000011100110111000011111000101001100110110000001011010110111100100011110000101011110010001100001010011110001000110100111100111001100101111000011011111100101110010000001100000101010011111110111000 1101100000100000101010111001111010101101001111011001101111001110110110010111010010100101111111110010111000001010010011111101001110111001110100010000110000011110011000111110110010000000010000101011001010110011100110011101001010010010001001101010101011100010000001111011011010010110011011110010100110101110111100010011010111101001001100101000000011110011111110100011110011100101101101111010001111001110 0110111101111100101011111001010000001111110001000011010100110101000100001010111110100000100100100111100001011101100110100110101110001001100011000100010110011010111100010100011111000110010110100110011000001000110110111111000011110100011011110111011001101110010101000000110100111111010100100000110011100110101011100100111000100011110111111010101011111011000100111100010101010100100011101111000100110110 1111110110001011100001010010000100101100010001011110110011111000101001100011111100110101010110010111010010100010111011001100111100100010001001101011011100111111100001100110101110001000110001000101100001101101110011011111101101011101101000101011110110110010101111101100000001110001000110000010111011001000001110000100101001011110011010000110011101110101111010011000100001110100010111100010101011111000 0000100111011100010000011100000010111000000000010000000001111100100110010101001101101001001000010111110011101111110110111100011010100001011001111101100010111011000000110011010001111100100100110110000110001000101011010000011000101001010101110100101000011001111011001000111111001101000101011110101000101111011010110010011110101001100110010010011001000001010101110011110110001111001111011100010011101000 0011110100000000001010011110010100010001111110000111010110011010000001010000001000001001000101001101010110010010110001000001111100010111110110000001111111011010111010100000000000011000011001100011010101110000111001000000011011001100110001010110101110011100111010100011110011001010100100001011101100110010110100111111100000011001101110110010100101100001110000101000001111010111100111101011011101011111 1100000000110101001000011010011000001001010111110111100101111111100001101110000011000100111011011100001110010101111001111110100010111000000000111111110110011111101001100011011000001011000000000101111000011111100111110100000101110100011001000010100011000011110010101000011000100011011101000100110111010110000001111001011011110101011000110001000011101001111001100100111100111101111000101011011001001100 1011101100101110010001011100010000001111001011010010001010100101100001010000001001100100110010000111100100001100101101011101001111110000111111011011111101001110101000001011101011111101100010110011000000000010100000110110001010011011000010001101100001001010110011110100011100110110100111100001011000001000100010100100111111100001000100100001100110101011111001011011000011001110000001010100011010111000 0110010000011111110101010001111111011110000100000010100000010101011110011110111000111011111100110010111111010000001100011010000011100111111110111110100010000011111000111001010100111100001101010100011011011000111100010000100110100010110000011010101100110001000110010111101011110100001110011101110000111110101001011110001100111101110110101011100111110011111001000010100101011100011011000100000011011011 0101001000111010100110011111001010111010000001100000100111100110100011001000010010001011111000011110011110111001010001101001100110001001011001100011001111111001111101111000001111111001001110011011010100001100101010001101001100110101110000111011011100110011000111111100111010010100110011000010101111010000010001010110111010111011111001110000011110110110111011110110100011001111011011110000010010101100 0000100110100101000011001101110000000001000001001110010011100110001101100101001001001010110111100110001011010001011000010011001011111011000011100100001100111111111101000001001011011101101111100011000101111100011000010001101111000010001101001111000101111011000111111100010100110001000011001110010010100010110011110111000111111110011111111010000010000100100011101011100010001001010111011101110000110010 1111010100000001111100101100100000000100100010010100110100000101000111001110101101000000011001011000011101001010110001101000011011010000001000101100011001111001110100111110111100111100110100111000010001111101101110100101000011111001110000000111101001111111110100000010001101111001101101101010101001111101010001000000000110101101010101000101001100110101111101100111110111111111100011110001000100110100 1010010100110110100110000111001000001001000010011100010110111101000110011010011110001110111110100000100010010011011011101011010001111100110001101001000100110001001110110010010010101100111011100011110111100000111010000010010110111000110000110001000111111000010110100011000101000100011010010001111000010111101011010001100010001001111100100011101111111000100001001010100101011100111101110000110010101011 1111101101111110001000000101011001000100111001100110100101001011001010101011000110010010000011010011011011110010101101101111100101010000101010100001000010011101000011010000110000001000000010110111110100011110011101101101001111000111100011101000101011100110100011010101100000010111100101100011110100010110100001001010011101110100111111000010101111011011010010110011101001110000101001011011011000010010 1001011001010101011011011010001110101101001101001010111001011111101010011111111011101010001000001011110010000100101111111001011100001001010010000011110101110111000101010111100000111100101101000011001110000011010010100111010001011000111111000101011110111001011110011111101000101010110110110110101101011100100010111110100011000000011011111011010101001010001101001100010101000011101100001010110100111100 0100111100101101101011101001100010100100000111101011001000010110011100001010011001101011100010000011110001101000100000111110100010100010111100111010110000000100011000000011100011000111001101001011000100101101100010111000110101010010001010010010100011101100011100000000010111001011101100111101101111011110011011100110010001001111101000101100111001001000000000010111000001110100001101110011110111000100 1101110101000011101100101100101111000110001101100010110000100100101101011101001101001001001110001101010111111000010111101001001000001110100010000110100101110100011110001100010001001111111101010110000010101111010111010000110010011010100010110110100011100100000000011110011110011000000111011101000110010010101101000111111010001101000110100010011010110111101010110001010110111100000000111001000011111100 0000100100000100100110110001011011100110010101011110100001001111100001111100101110101010100011000001110100011100101110000010011001011101101101001100111000111001101111000100011011000000100110000111011000100101001010011010101110111111010000010011010110000011101100100110001111011110011011111011011101111100001000110011101101101001010011101100100100101111101010100001000100011001010100110101011010101100 0011001001011100111100100001010010110100001010101011111000010110111111001010111111111011010100001111100110000110001101100011110100110011001111101100111010011100100111000010001101001101000101111111011110111000011001111011010010001000000100100111011011010111100111111101110001111000000011111101100001111000100101110000001111010011100010111110011101000010110101111101001111110111110010010001001111001000 1100100001011110101011011000111010100110110001010011001100100001110101000101111111011100110100011100111001100110010101010101111111110101100100011010101101000001000110011000101111101001000011010100010010000000100010000101000001010010001010111111101011101001100111001000110001011000000010110010001011000011101110001011111111011000011001111110100101010001110110001010011110111101101111001001000111001011 1001010110011010100010010110000110110010011001000100110110110000011000100100000110101110111100111100101010111100001000011110111111110010001100110111100000110000010110000101011111111010011110101000101111010011011101000110101111000110000000011100011000101100110110011001001011011011111110011011101111010110010110000111101101010001011100100001000011100100111011101010000011010111110010111101001010100010 0100010110011100101000110010010111101110001010110001110101001001111000111001011101010010110010101001001000110010011000111010101010110010000011011011100101001101111001011001001001101111001010001010110010011100010111111010011011001111011110101011111110100001111110010000111000100111100010001101100010101111101111011001001010110011110000000000000111001100000101110000111111000111000100101001110100011111 1110110110111101111110001111000010000100101010001101011110110011101101001111101001000101101010101101100000000010101110111110101011011110101110101110101110001000110001110110010011101101010111100011001111001010010011101100000101101010111111111011000011100000110110111100010110000000101110111110111010101011001000101001010011101011111101010010100001010100000101000011010011111111010111101000101010101100 0101010101011101100011101111101110011111111000111111001111100101110010100101110010011000000010001011111100100011000010001010110111101111010011101101100010000100111100001011101100011011111001011000011010111111111110001110100100011000110100011100001110001010100011111110000110001110001001101011001100011000011100010110011010000011001000001000011110011101000101010010110001110110010111111011001101100100 0100110000010110001101101111110000100000011001010100110111101101101101001001011001011110011000000000101100110110001101111100101001011000011001101011111010010011011000001100010111000110101011011100001101001100010100000111000001111000001111101111000101011111000101010010011111110111101111000010101000010110010001010010000110111011011001110001010010111000101110010100010110001111001101101111011100001100 1010001001111110101111100111101011100011100000000100000110110100011100111000010001010100110000000101000010111111101101001000010010010101011010001001101110000111101010101110101100111100001111101010001100101111110101111010100010011100011011000100000100001100111001000101100101110111111111001010001110110110011011100000111001101001011001110001110111011101001010110011101111100000000010100001111001011011 1010011100001100100101011111001110100011001110010000100001010000110010011100010001011100111001001011001101010110010101011101011111111001100110000100000110110001000000101110100001010001001110100010101001111111111000010011010001111001110110010011011111010111001110110101110111000100001111101111010100011110011101010111110010110011100110011111110001101101110001100001111011110111111000001010001011001111 1111001111100110101010110100110111000101111010100001010100110111000111010101111110101001100010001110000100001011011010001111001000110111101011101110110100101010111000100010000010011011110101010001001110111000111111111011100011101011100110100100010000100101000101011000011100100001100001000101000100000111011110111011110110100100100011001010111101101110011000000000000100101100001101100011011110000110 0001001100001011000001001111100011000101000110100101011100011101110101110011111111011101011000100000101101101000100101010010010111001110110000100101011010100000110011111100110000100100011111001111110011010010011111010010011000110101010001001001100001010100010010100011110000011000000010000001111001100101110000011010101110001010011000011100001001101110111010101111111111011100000100110101100001101100 1111111100101110111101100101111101110100110111111111110001010110101111010001001011101000101101101001001111010001110011110010000001001111101000101010110010010000010111101001110000111100010000010000010010101010100011001100111100100001111101010100001000011001000110011000110101111110101100010100011011111010011111100001010010101011011100000011100100101010011110110101101001010001001001111111010111101001 1101101011100000011001110101001001010100111001010000110001011101110000110010001101110010100011101100100101010010001100000101011100010110110111110010111100100001111001001110110100011100011100100000001001110010111011000101000010101011010011111110100010011100111010000001001000101100101101001100011101110110010101001101111110111000101100100010001111101000010100100000111011111011010111101011100110000000 1110001100010001101101001111000111001000001110111000110111001000111011110011001000100011101010110111110110110001001001000011000000110100101101110001110100000101011011110011000100101010100000001001010101101111010001001011001111000111111110010101011011101011000111011100100000110000000010000111111000010111101011100110001101010110111010010010101010111011000010001111101111111111001000011000010011110110 1011110101111101010100010111110010110111011001111011000110100011010100111100101011110101101010000011101001011100100001100001011011010101101011010111110111010111010100011001010010101101100000101100101101001010100111001010110011001111010101001111101011111010100001100000011011001010001111110010000000111010101111010011110000010000011100111110000000110010100101100001010010100000101110100011010100010011 0110101010010011001010101100110101111111100101001111100000010000100010101111010100110111000111010000111101001010001010110100101100001011000000111110100000101010000010100110111000110011000110101010111101010110111011000110000000000011100100010001111001001100101000011110010000110111010001110101001101111000101000000111011100010110100011110101001000111101100011110101000111111111001000100011111011100110 1001110000010110011100001111111101000101001010010000000101001110011111110001010001110111000110111011010111001111010010000110100101001111011000110011001001011100000111111110010001001101001010101001000000111001000111011101000000011100010110000110100011101101100110100101110010101000101000110111011011100001000011101010100001001010111001110001111110001010001000101011101100011101100011010111001011101001 1001011010001011111111110110001011101010100111111011000100010000000101110100000010010001100011100010100100010001001011000111100101010100100000010111101001110100001001101000111001110011011110000000111110111111001001111110101111111000001100010010010110110110101010010101000001100001111000110011101111011000010101001000101001110101101111010001011110100111001001110001110011010100111010111001010011000100 1000001001000110001010101110011110111011000011010011110110010001101100100101111000000111101110011110101011100001101001000001011110101011010001101101010111111101011101101001110100100000011111110011100111010111010001100010111010111000000101001111010001100011000101001100011101001110100001110101110110111010100010001000001100111001111010001001001010011001110001110110000011101110000101100111110111011001 0011001110001111110001110001000100011110111001100100101111011100001110011011110110011100101111001000000101111010010101101010101101010010011010101001111001111010101001000100110001001010001111101110010111010000101111011001100011001000111011011101010111110101010010000110001000100101111101001000010101100010100101001101101011010010101101000001010101110101100011111010000011110100000011100001100001001001 1100110110001001011111000001000001000010001000101010000010011010110010110011011001110110000100110101110011010000010111100010110011010000011010111111100100000110001010111011110110110110101001011010010110100110010010101100010101111011001001000011111110011110110010001110101001111010101111100111101101011111011001111010010100011101000100010100001100010000010011011011110001111101010110010100100011000100 0101100011011010101010111010111001010110111101001101010001111010101110000111101110001101000110011111100000010010110101011111001000101011111010101111110001011001110011010000100110100000111000110001111011101000001011100111011001000100100110001010110011000100000010110111011001100001001100111100000111111011011101100111101110100100111001011010000000100000100011001101100011110100001001001010101110001100 0100101000011111100011101000101110100001010111101000101001100110100001101111110111000000111100010001100111110000000100001010110010010101010000000011101110110011000000001110101011110001100100010101111010101010010100101111011111010111100101010101100100001001010011001100101011110010001000000101001001101011011101001111110100010001011001001000111110011111101010010011000011100101110110010100100110111000 1111000111010000111010001011001010111100110000001100011101000000000001000000000001001010100111111111000011110001001010001100100010011100100100001011110110111110111010101010110111101011010100111011010001110101011010001111011011110111100111000011001011001001010001101011001001010110001111000101010011000000111000001010101100111000000101011110010011011101101000011111100100101111110010001101011001010101 0111101101010111100000000001001111101001011010000100000101000101000001010100110110111010010000010110001101101110101011011010110001000110011111011010101000010000000100101000101001011000001001000111000010000010111000001010000001100000110100100100111100100100110110100001111110110110111010101100010101101111101000011111010101010010110111000010011110000100110001010011010000110010110111011100101101100110 1100000101011000000101110110000110100011010110011000000010111101011010111000110100011001011101010110000011011111000111001111111010100101111010001000001011100011101001100010111101010000011001001011110111110001111100111000101001111110111101111000111100101000101001111001101010100101001011000011110100100101100111101011111000100101100000000101100111000110101011011101001101010101001100000011101010100010 1101001000010001010011011010111101010011011010100011011101110010101000111001000111111111110101111111010001011000010000100110000000110001100111010111101111100010111101110001110111101100100000100100001101011101111110000011111011110001010111000101110100101001100101000001101100011100111011001111010001010111001111110100111110000011011100100111000001110111110100001110011100101111010100111010010010110111 1111101100001111100001111110110001100010011101100011010011001011101101001111101101010001111010100101001111000101101000110101000010111111101101111101110001110010110000011011111011101110011100011101010010010101000100001110000111101010010001010011001100101100100110000100010010010000011010010000001111111010000110000111110110100010111100001000101011000101110001011011110010011000010101100111110100010000 1110111101010101011101100010010100011111000011101011010000011101000001011011000001010111100011111101100000111011001001101100100110110001101000000110000101110011000110101010001011100000111110110011101010001010011110010101000010000000100000011001110000000101110111101010101001101110000001000000011011011111110110101101110010010000001010000100000001111110000001010010100001111100110111101011100101011100 0101011001000111001111010111100101100001101011100001010011000000001101011001111101001111100000010010010110110111100111100010111111110001111101010010001110110001101011000100101011010101111101010011001011101010010000110110101010011110011001110110110000000010000000011001111111110000010110010010011111101101010000000001000101011011001111001110010100111001101000111000000100100111000001011011010001110110 0011111001110011100010001011001111100000111110101100001111000011010001110111001000001011010111101110010110000101101101001111010001010111110001111011111001010001111101001010100111111000011100001011111101001010111100100110001000000100011010000100001011011000011000111000000000010111111000101000101011111000111110110100100011101110000011011110101100100100100101111110110010001001110000111100100111100100 0101010000111011100100000000101001110000110111101101111000100001000111101011111110111001000110001111010101110111101010011110000101001010000101111001000010111101001011110100110100011010010101100101101010111110000000010011100111110010001110100111011001110000000101001111011010001001110111011110100010101000110001110010000001100011101011000001101000001110000000101000110010011001010110110010000110110010 0100011010100110111100000010011011100110110101100001110110101101000111011001101111111111011000111110110010000010110100011100110001100100101110010001010100101010010011010010101011001011001001110101100010101110111101000110101001101110111010101010011011001100100010000001010011010010000110010011100110011111100100111010001001100111101101001011111011011110010011101101001010111010010111010100110110111000 0010011001011001100000111010010111110110100111110001110010100100101110011001110111001000011100110010010110000011010110011100000000000110110000011100101101001111001011010101001010101111000111100011111110011100001101011110100111011101110101011001101011110101001100110010011100110000001110010011010000010100110101101011000100100000011110100101011111000100001100010010110000010000011001101001010011000100 1000101001011100011101010101111000110011111101111000001110100011010010100101101011001011111000101011011110000010101100101010010010001010111101001111010001100011111111101100001111111001011000011011010001111111110100011110011111001100010000010101101001101001010011100001111111011010000011011110000000100010101101000000000000100000010000010110011010110111101000110011011111000110011001010010001010100111 1000101011000011100011111010100011010101111110100001110011101000010101001000001001111011101101111001100100000101011101111011100111010100011000110110000100101001100011001101001111011110000110100000000101101111010001101110100100101100000001111110110100111010001100001101110110001011100110011110011000000000001011010101111000001001010110010110011110000001000100000110010011111001100101010100100101111111 1111011111011111010011100111110001110110101001000001110011011010110111100001001100010101001101101111110110011011001100110110000101001010010101101100101101111110110010100100100111001100101000111011011111101100010101100100111010001111010111010001010011000010110001111001010110010110111111111011001101100010001001100101111101010010101010001000010100101010110110001110100110100100001000000000000101111001 1101110000110110110000111111001011110101001110110000011010100100001010110111100110101101110110100110011111110110011100000101010110001010100010111000100111100111000000011011001001010001110001010110110101000001101001001110101010111010000101110111011010111110101100101110001010111000001110110001001010110000001110110101111000110010011100010010100001000010100010110010110011101110001011110000011000100010 0100011110100110010111101010111010100110010010001110010011000000000011000100110000010110011101100101110101010101100000010100000101010110010100111100100011010110010000101000110000010011101010010101000001000001010011000111000010011001001101110010011110000111001101100110010000000011100010000110101110010110111001001010011000001000000000100001001100000111000000111001111001010000100010010100001110000111 1010100101000101011001010000011101100000001011001101101101010000110000000000100010000100111100111110100110010011000100111011010011110011001010001011100101100010110000001000001000000100010110001101110100101111000011101000110100001000000000111000011111100101000100010110000110001110000110010010000000110000011100110000100001110011111000000010000111001101000100111100001110010010010011101110010110000101 0111110010010000100110101010110111101010111001110111001110111111100000010001110000110111011001010001111001010001111110101001010000010101010100010110011110110010111111111110110100101101000000101111101010101111101000001111010101000010001001100011110010000010011000110111011111000110110010110110000101110101101010000010110100010010011010110101010000111101011111100110110111100111110110110001100100111111 1001001011101000001111110011000101001010101000000000101011010011101101010111011011011101010011001101111110101110001111111010001111100111001110110010000010111000011010110110001010001001110101110001100001010101011101010111101101111010110000101010001000000111011010001111100110011111110110101101010110010000001111111000100110010000110011010111000000111000011000110000101000010101110011101000001110001000 1001101011111101001001010011100000010010000110100000100000111101111110111111010011001001001111001000011010101001010111111010111101010110110100110111011100100101001001010100111110101100010011001011100000100110110101011000101000011000101101110110101111111100110111110111011110111001001010001001101000100100010111011110011111101001010001110000100000101101000110100110011100001111110100110100011100101110 0000100011110101011101110000001101001101100101011101001001111101000011011001111111101101101001110001001110010000000110110110001000100100010101110100010001101110110101101010100101100101111001111111001110000000001000110100011001110101001000101110100100110001100000100110011110111011101110011100111011110101011001011110111111010010100000110110010011101100100110001011100100001101101001110010111000110011 0101111100101010110101010100101111001001110110000000111110100001111001011100101110111001001110011111101110001011000110110000001101011011000000011000111111110101110111010110101111001011110110010111110100100001101101100001101010110100111011101001011001111001100000000111101100010101101011111010011110010100010111110111111100011011100101101100110110001101111000011000000101011110101011011100111101111110 0010111000110000001011010010111111000100010111110100000100000100011001100011100100100010101100110101101001101101001101111010000111110110100100010101101101111111001110110000011111100100001110110110101101001011110110110110000100110010000011101100100001001110101100110000010000101101110010110100101110010001100101011011010100111111010100100101111100010000101011001111100111011001000111110000101001100111 0001000100000001010111111110110100011100100110010000100111000001000010101011110111100001110101101110010001011110101100110010011010010001010010110100001111011100100111001010000011111011010010110100101110000010111000000100100010000100001101100100000111011001110000000111110001110110100110100100010010001101010110100010100110101010111110011000001100011101010001010001101100101001111000001101010011110100 0011001110011101010100111010100100110000000010110100100101101100100100010011110100011111000010011101010011101111011110011110101111101011101101010000100000010110110001101100011100111000110100111010100111011100111111011011000000100011110111001001110001000001101001111111010110111100001010001111001000000011100011100101111100010000010100000010111011001000110000001000110100011101100100001100111000001101 0011011111111011110001011101111110011000000111010001011110010111111100101111000011100111110000011101111010110100100110001001011011000101101000110100111110001100000000110010010110001100100001100001100110000111111111001001011101011101101000100000110101110011100001001111110101110110101110010001001111100010011010000101010110111011000000100011000001100000111100111011100111011101001000110000000100110000 0001001101100001101001010100011001011010000011111001000000100001100001111110010101111000001001001110000010000010101000111111110001001010000111111100110000110110011010101110001011110010010010111100100110110110010011000010110010100111001000111110000000010010110001101111000010011001011001000001010111110100001001100000101000001000010011100000000001110101110101100011011010010110011110100001001110001001 0101000010010110101010001001001101101101100111110101110000001010101100100001111100011110101110111011101000011100110001001101010110001110111001001100101111101111100011010010010011101101001101111010110010100111110000011001010101101111100110100110110110010111100101010110000111110111010011100110111001011100100011101001001111011100100011100101000111110101000100110011110010001110110010000100111010011101 1101011001001111100100100111110101101101010011101001100110001100101101111111000011111000101010100001101100100101011000100011111110110100000000001101111101111001111010111010011100110001101000110110010011000110111100101001100001011010100010111010100010111000110000011000100110011101000111111011100101000110010101111011000010010000101100100010010110010111111010010100010110111000000011111111110100101010 0001110000100101111111010001100011101001111000111010010000011111001100001001111000111000000100100101101101001111111001100010101110111100001001010010000110011101111010101010111101100110001100101011101011001110010001000110010100001111101110010010000101100101100101001110000100011111110111001010110100101010010011011110011000100010000000111010000011001100011110000001111000001001001001111011000100011001 0010010011011111010111001110011111001111010010100010011011100000010000110011111010001111100101111001011100001100110110000111110111001010100101011100000111101101110010101001010111111101101001101001010100100001100101010000010100001000101111110001100001111010111010010100001001101001000001111111011111100001101110100111100000100100011101100001011110001110000000100011011110000000000110011011000111100101 0000010001010110100010100001100111010010010100011001110000011100111101101000001000100000000111000011101110111010001110110000001000001101100010000100000000101100111001101111011010110000111011010111111100000010010101110000100101101100100001110111000100010011100111011111110100101011100110101001101010000100011100001111110011110100000100011101010110111111001110001010001000001111111000000000001001001001 1110111011111001011010100011110101111100010001111011011101011111100100100000011001010101111000110111000110001100011000011100001011111000010101111101111100101000110000100010001010011110010011010001001111011010101010011001011110001100011111111111001000000111110111001111010110111000101011010100000100011010010011000000011001111001011101000111011100000100001110010001000111101011100100000111001010100001 1101001001101011100000101011010110001111111010011001110001001011000100110111111000101011111011110110000100110111101101111010101001101000111110100010001011011100011011001011111011100111010010110000010100010100001101111111111111110101110010111000111100000111001011101100011000101110000100111001001101101011011010000001010111111000001111100010100011010111000111101001001010000000110111011000001001001001 1100010001111111100001100100110011011001010101010111110000111101100101110101110111101011100011001001010000111001101011101011110100000000001100011101010001111101011111101111100011011000111000000011100011000111110100100011101110001001010100110100111011011010101001111001101110001111100101010100000100011000011001010001110101110011011000010010001101011000111110111001100101001111100101101110000011101100 1010100001100010101010010101100100101111010011100110111110110111001101101110100100110101110111111111011011111000101010010100011100100101001011111000010101000101111100001011110110101001100000100110000000100001001101001011000110100110110101000001010101110001000011110111100111000010001111110001111101001100110000001111001011101000010101011101000101000101101101001010000101101011101011110100110011110010 0110000000111000110010000011111111110001011001101100000111011011001110010000000011101001000000101010110111111101101001110110111101110111000001001111110010011100010111010110100101100011101110101100010001101101111101000111001000100010001010111001111101110010000011001010110000000100011000100011011111100001000001100100101010010110100000010001011110110001011100101111110001100100010010101110100010111001 1000101010111011011110100100101000100011001110111111110010001100000110010110010110101110001010111100110111100110001101010011000001110111101011101111010001011111111100111100011110100100000011010001100010010110011010100001101110001100100101010101000100101010111100011000010110100100011011100111001110110110111011101111010010011110101011011101010111101001111000111110000010101001000111110100100001100111 0100001010000101111100011010111101100001111100110001101001100011101000100110001000010000000010100001001011110100110001100111100100000000111110000011000011011000101101101110111110111010010111100100110100000011011011001001100001101000100111101101110010101100001110111010110101000010100011101000000101111011110110001001111011000001001011100010101001010100100100110010011011110011110100001001001001001000
cTrader Algo

Symbol【cAlgo API】

10/27/2020 1/28/2023

4年以上前の記事です。内容が古くなっている可能性があります。

通貨ペア情報取得用

Robotクラス(本体)が持つプロパティSymbolから様々な通貨ペアの情報が取得できます。SymbolのインターフェースはSymbolInfoインターフェースを継承しています。

 

SymbolInfoインターフェース

通貨ペアの基本情報を参照するためのインターフェースです。

public interface SymbolInfo

関連するインターフェース:Symbol

 

プロパティ
(string) Name

通貨ペアの名前を取得します。”EURUSD”とか。これをそのまま発注などに使用します。

(int) Digits

価格の小数点以下の桁数を取得します。

(double) PipSize

1pipあたりの価格を取得します。

(double) PipValue

1pipあたりの価格を口座通貨額に換算して取得します。

(double) TickSize

値動きの最小幅を取得します。

(double) TickValue

値動きの最小幅を口座通貨額に換算して取得します。

(double) VolumeInUnitsMax

最大発注通貨量を取得します。

(double) VolumeInUnitsMin

最小発注通貨量を取得します。

(double) VolumeInUnitsStep

発注通貨量の最小増減幅を取得します。

(IReadOnlyList<LeverageTier>) DynamicLeverage

通貨ペアの通貨量別のレバレッジを取得します。

(double) LotSize

1ロット当たりの通貨量を取得します。

(MarketHours) MarketHours

マーケットが開いてる時間を取得します。FXだけなら気にしなくていいです。

(string) Description

通貨の説明を取得します。EURUSDなら”Euro vs US Dollar”とかになります。

(long) Id

IDを取得します。使いません。

 

(以下はcTrader4.5で追加)

(double) Commission

トレード時の片道手数料を取得します。(単位はCommisionType次第)

(SymbolCommissionType)  CommissionType

手数料タイプを取得します。

(double) SwapLong

買いポジション保有時のスワップ金額を取得します。

(double) SwapShort

売りポジション保有時のスワップ金額を取得します。

(DayOfWeek?) Swap3DaysRollOver

スワップ3倍付の曜日を取得します。

(double) MinStopLossDistance

最小のストップロス距離を取得します。(MT4で「ストップレベル」と呼ばれてるやつです)

(double) MinTakeProfitDistance

最小のテイクプロフィット距離を取得します。

(SymbolMinDistanceType) MinDistanceType

上記Min~Disanceの単位を取得します。PipsもしくはPercentageを返します。

(Asset) BaseAsset

通貨ペアのベース通貨を取得します。(EURUSDならEURの部分)

(Asset) QuoteAsset

通貨ペアの決済通貨を取得します。(EURUSDならUSDの部分)

(double) MinCommission

最低手数料を取得します。単位はMinCommissionAssetによります。

(SymbolMinCommissionType) MinCommissionType

最低手数料の単位を取得します。AssetもしくはQuoteAssetを返します。Assetなら単位は口座通貨、QuoteAssetなら単位は決済通貨(EURGBPならポンド)になります。

(bool) IsTradingEnable

通貨ペアがトレード可能かどうかを取得します。

(SymbolTradingMode) TradingMode

通貨ペアのトレードモードを返します。FullAccess(トレード可能)か、CloseOnly(決済のみ可能)か、DisabledWithPendingOrderExecution(待機注文のみ執行可能)か、FullyDisabled(トレード不可)のいずれかを返します。

(int) GracePeriod

スワップフリー口座でポジションを取得してから手数料がかからない日数を取得します。

(double) AdministrativeCharge

スワップフリー口座でポジション維持にかかる手数料を取得します。

(DayOfWeek?) AdministrativeCharge3DaysRollOver

スワップフリー口座でポジション維持にかかる手数料が3倍になる曜日を取得します。

(double)PnLConversionFeeRate

Gets the symbol profit and loss conversion fee rate… だそうです。(意味わからん)

 

 

 

メソッド
(double) NormalizeVolumeInUnits(double volume[, RoundingMode roundingMode])

volumeを発注可能な量に調整して返します。例えばvolumeに12345を渡すと、(VolumeInUnitsStepが1000なら)12000が返ってきます。最低でもVolumeInUnitsMinが返りますので0やマイナスの値渡しても大丈夫です。

逆に言えばVolume計算値がマイナスだったときは発注しないような想定のプログラムだった場合でもこのメソッド通したら発注できてしまうので注意が必要です。defaultはToNearest。

(double) QuantityToVolumeInUnits(double quantity)

ロット数を通貨量に変換します。quantitiy*LotSizeが返ってきます。

(double) VolumeInUnitsToQuantity(double volume)

通貨量をロット数に変換します。volume/LotSizeが返ってきます。

(double) GetEstimatedMargin(TradeType tradeType, double volume)

(cTrader4.5以降) トレード方向と数量から必要証拠金料を取得します。 

(double) AmountRisked(double volume, double stopLossInPIps)

(cTrader4.6以降) 指定ボリュームで指定Pipsにストップを置く場合の損失額を返します。当然決済時の為替レートによっても変わるため、あくまで目安です。

 

LeverageTierインターフェース

SymbolInfoDynamicLeverageの要素です。発注量によって異なる最大レバレッジを参照します。

public interface LeverageTier

 

プロパティ
(double) Leverage

最大レバレッジを取得します。

(double)Volume

Leverageが有効な最大通貨量を取得します。(DynamicLeverageの最後の要素だけ扱いが違うかも?)

 

サンプルコード
Print("この口座の最大レバレッジは{0}倍", Account.PreciseLeverage);
Print("最大発注数は{0}通貨", Symbol.VolumeInUnitsMax);
Print("{0}の通貨量別レバレッジ", SymbolName);
foreach (var lt in Symbol.DynamicLeverage) {
    var lots = Symbol.VolumeInUnitsToQuantity(lt.Volume);
    if (lt != Symbol.DynamicLeverage.Last()) {
        Print("{0:#,0}通貨({1:#,0}Lots)までは最大レバレッジ{2}倍", lt.Volume, lots, lt.Leverage);
    } else {
        Print("{0:#,0}通貨({1:#,0}Lots)以上は最大レバレッジ{2}倍?", lt.Volume, lots, lt.Leverage);

    }
}

実行してみると最大レバレッジが表示されます。

 

 

Symbolインターフェース

通貨ペアの基本情報に加え、BidやAskなどリアルタイムの情報を参照するためのインターフェースです。

public interface Symbol : SymbolInfo

SymbolInfoから継承されており、リアルタイムの情報を参照するためのメンバが追加されています。

 

プロパティ
(double) Ask

Ask値 (買う場合の価格) を取得します。

(double) Bid

Bid値 (売る場合の価格) を取得します。

(double) Spread

スプレッド (AskとBidの差) を取得します。Pipsじゃなく純粋な価格差です。

(double) UnrealizedGrossProfit

保有中ポジションの総利益を取得します。

(double) UnrealizedNetProfit

保有中ポジションのスワップ、手数料を加味した総利益を取得します。

 

SymbolInfoのプロパティ

Name、Digits、PipSize、PipValue、VolumeInUnitsMax、VolumeInUnitsMinなど。上記参照。

 

メソッド
SymbolInfoのメソッド

NormalizeVolumeInUnits、QuantityToVolumeInUnits、VolumeInUnitsToQuantity。

 

サンプルコード

Pips関連の計算にSymbol.PipSizeはとにかくよく使います。利益額や損失額の計算となるとSymbol.PipValueも結構使います。

// 1本前のローソク足の高値をストップロスに指定して売り発注
// 最大損失が10,000円以内におさまるようエントリーボリュームを調整する

// 最大損失とストップロスPipsを設定
double maxLoss = 10000;
var stopLossPips = Math.Round((Bars.Last(1).High - Bid)/Symbol.PipSize, 1);
var spreadPips = Symbol.Spread / Symbol.PipSize;

// stopLossPipsがスプレッド以下だったらなにもせず止める
if (stopLossPips < spreadPips) Stop();

// volumeを計算する
var volume = maxLoss / (Symbol.PipValue * (stopLossPips + spreadPips));
Print("maxLoss={0}, pipvalue={1}, losspips={2}", maxLoss, Symbol.PipValue, stopLossPips);
Print(volume);
volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);

//発注
ExecuteMarketOrder(TradeType.Sell, SymbolName, volume, "SymbolSampleCode", stopLossPips, null);

デモ口座で試してみてください。手数料分はずれますが、ストップロス位置で最大損失くらいになるようエントリーされるのが確認できると思います。

 

 

RoundingMode列挙型

Symbol.NormalizeVolumeInUnitsでの計算方式を表す列挙型です。

 

ToNearest 近い値。奇数丸めっぽいです。2500も3500も3000になります。
Down 切り捨て。NormalizeVolumeInUnits(volume, RoundingMode.Down) の結果は指定したvolumeよりも小さい数値になります。
Up 切り上げ。NormalizeVolumeInUnits(volume, RoundingMode.Up) の結果はvolumeよりも大きい数値になります。

 

 

SymbolCommissionType列挙型

手数料の計算方式を表す列挙型です。

UsdPerMillionVolume 100万通貨(USD)あたりで計算され、単位はUSDです。
UsdPerOneLot 1ロットあたり計算され単位はUSDです。
PercentageOfTradingVolume トレード総量の比率(%)で計算されます。
QuoteCurrencyPerOneLot 1ロットあたりで計算され、単位は決済通貨です。

たとえばUSDCADでCommisionが10、CommisionTypeが”UsdPerMillionVolume”の場合、100万ドルの取引あたり10ドルの手数料ということなので、1lot(10万通貨)トレードしたときの手数料は片道1ドルということになります。

少しわかりにくいですが、GBPUSDで同じ値だった場合は手数料は1lot片道1ポンドになります。(10万通貨=10万ポンド=約12万ドル=手数料は(100万ドルあたり10ドルなので)約1.2ドル=手数料は1ポンド)


まだコメントはありません

新しいコメント

コメントは承認後に公開されます。承認まで次のコメントは投稿できません。

cTrader's Life

© 2025 ajinori