1101110110110110001011001011110001111001011111001011110100110110101010001111010100011111001101010111010111011110101010000100000111011000011100001000111011110110101010011110100101010000001100011101010100001101110100001010010000110101110101010100100101000101011001100001101001101001111110101001110100000011001101001001010001000111000111001110110001011010111001000110000101010111110010101011010100010001 1001110011100110100000010110001100100001110010010110110100101000011010011001010101101110010111010101111000010110110001011011000010110000001100000101110100101001001001111111110111110001011101010100001000110010001100110010111110001100110101010100001110110001011110000010101101010010100000111110000000100001011101101001011011010100110110001100111010100111001010000110011010101100111100011101010010011110 1010011000111110110101100010001111010010101010000001000000011000110011001111011000100110001100001001001011100010111000010111001110100010100100011100010000100000110001001110110110111010001001111101111011011000101000001010011111001011011010011001101111000100000101000000001001011001101100001110111001111001000101100100001101011101000110000000100010100100111010000011000111000010111000011101011111111000 0011010101110110101110010101011110101100110111010011111110100011011000111011010001001010001010010111100100110101111101100100001110011010001000110010111011110110001010101111011110000000001110100111101111010000000000110010001110000101010000101110101001111011111001001010000100001111010010011010100101111010111111010000010011110001111000101000001101001110110010101001110010100110001110011010001001010000 0011101000100111101111000011100100000110000110110111101001000000110100100011110010111111011001000100000001110011001010110001100101010101001101100001000000001100001010011000110011000010111100011100110110011010011111111101011101000100110110110010011000010101100010001011001010101101111100111110111101001010001010110001110101001111100001101111111101110011000100000011110011111000011001100001110001001000 1111001101111100011010010100101011000101101010111001001100000101110001000100111011100111011111111011110111100011000011001000000011010111100011000111001000000001101100001111000001011101011100111110101010001011011011011010111100000100110000111000010100101111100000011111101100010001111011111111111000001110111001101001000001010111011100010110110111010000101100010111011110110010010101101110011010011000 1101110000000010100110111100101101100110000100100101001001000001011100111000110101000001101101011101000101111011010111010100111011000101010100101110011001001110001111110101011000011101011000110101001011010000110001110011111100001101110011111011111000110011000000101110010111010101101010010101000000000010110011010011111111001001000010111111011111001111011011000010011011001101010000100001000010011011 0001100001110011000000000110111001001001011010001001001010101111101111001111110111110000101010001100100010100000000110010000001110010101101000100110011001000011101011010001111001000101010101111111111001001100010100110000000100111000011100110111100010000000101101110101011000010010001100101010010100110000001110111011001001001100010100000010010011100011010110111100000100100100110111001111110000001011 0001100100000111100011101110001100100010110000100011110011001101101001101011010111101000010011000010100010100000011111010100110100100110010110111110101100110001101001010000001100110111111101001001110000110010111001110001011110110100100101110011001101100000011101111011000101100010010010100100111101011100010011111100111001001011010111001101101101111011111001000010001101000011010011100100010111111110 0001110010000110111110111000111101010001101001100100011110010001000101110110111111101111110010110000100100000011100111011110111001101011101010000100101001100100110100111110110100010001110001111001010111010010100001011110000011000111011011101110110011000101101001101000101001100100111001010111100001101111010010001111010100000100101100011110011010110001101101100111010101000110001110001100110010001011 1000000011001111111111111111001001000011101000011100010110011101101001101111111111100111100010011000000100011110101110001010110100101001001110101001110011001101111111011001011100000001101001111011101100100001110010010000000001100111101000010000110001101110010110100000001101100000000110000010001000101100001000111010111101001111000100010010100000100011110001100101111011111101111101101110010111011111 0100111101100010011010111101000110101111011011000011010111101011000101000110000101110000100101100011001000111010101010010100100000001000010100101110100110100101111000101000001110011110011100000100111010011100110011010000010011011001111101111011001001001011010001101101010011010011011010111111000011101001100001110110110100111111110010101001101010101001110010101001001100001001110010100111101110101011 1001100101111101001110101100110100010100110000111011011110000110001100101100110000111001001010101001110011010011010010010110111011000111111111100001001111010001001011010011011000111010110110110011110110110100110000010101100101000101011001110101011011001100011010100011001111010011001111001100001011011111100000001100111001111000010001110100101111100000001011101100011001101011111010011101100101100000 0000011010010000111101010110100001111010011101000111100111111111010011110001111100110001111010010000100001110111001010010110101110111011001000100100100001001000110100010001110100010010101010001010001111000100111100001100001010101111001001101110010100101001111001000001011010001111111010010010001000001111001110010010011101111001101001110010100011001011111011110010111000111000100001011100000111101000 0110010100011010100010000100101101011011111000111010111100100111111010000110000001100101100100101100100000101101011110101111111100010110011011000010101001110001111001010001101111000010000001010010001011101011110000010010000000101000111001101001101001111101111101011011000110111110000110111100010101011101101011111111011011000111100000000100110001000111010010010000000111011101101010010100011011011001 1110101011001111000101111001101110001101111001101111100011110011011111000101111010101011001101110001110100100011011100100100100111010010010110100001010110101110100001101111110101010000100101111011100011111101110010001011000010100010000000001011001000000111101001101110000100111001000100101000101001000000101111001011001010101001010111110101001010111001011001001100001101011010010001000000100101100010 1100011001011111010001000010101011010110110010011100011010011110001001111000001100100101011001010101110010000001110110100110110110111101000101111010111110001100100101000010010010011010010110101101111010011000000100011101110101011100110100011111101100101001100101001111101110001010001110001100011101111010011111000111101110010101101000000011010101101110111111111011111001000011010001101000000000010000 0100011010100100001100110101100000000001010110001101111001110111001011111011010111101010001000100100000011011111000001111101000010001100011010110000110010011101001010000110111100101100010001000011010101110010011011111111110001110000111101100110101110101001010100111110100101111111101101001100011001110110000100000001100011101101011111111100101001011000011110110110100011000010011010100111101010010111 0001110101101011001111101001001110100110001000010010111000111100100001110000010101001110101010001111110100111010110100001010111110001010011000000110100110111000011100100110000000001100110100000101101000110110011110111011101100101100000011110000100110001000110101100000000110101101001011001001011110110100010001100110110000000000101001111100110001110100001001001001100110100111001010001010100010001000 0101000101011000011011001111001011101010010110101100000001101011101101011000011000111110100101001110011100001101011001000111110011111010000101100100111001000101010101011000000110001011000110100000100011011100011001001110101010110111001001011011001010000000011110010111111100000110111010001110110101110110011011011010011101101011011001000001110001001011011011100101110010000000110011010101011100011011 1011011000001101010100001110001011101101001011101001111001010101001001111010100011101111011010111111110001011111001110100011110000011100111000111100111100110011100111011000110110010101001000010001101011100111100110100001100101001111010100101001111100100010111001001110111001011001101010010101100000110010001000110110101101100110100011100100101000110100111001111110111000011101000100010000110011101110 0000111111010001100010101110011100100100101000101010001000010110111101000001001001000111011101011011000010001010100110111110010010001100001001000000010110011011000110000000000001101011100100110011101101000010000010111100000111110001011110110011011100011110011001100100011010101001010111111001010000001001001001111101000111100001110100101001001110111010101100111100001111001001010111010110110100111001 0111000100110011011001111101101001101000101110000111110001001111111101111100111100101011111010010011110010100000000101011000010000100101110101101101101000111110010011001100011101001011110110010100101100000011000110111000000011111111100110110100010011111101111111100011110101000110001101000001101001110100010101010001101000110110011011111101010111101110100011011100010110101010001111011111100011111110 1110001001111011010111111010111010110011111001111000111101011100010001111000000101000111011011101101011111100100011010011110000000000111011100001100100111001101000110000010010011100011111001001101001101010001110000001101100111101111000100011111000110011100000110111010110011111010000001101000100100100100101101101010110111101101100001000110011110001101001111011010100111101111100010110110111111010010 0101100110011000110100000101000001101111001011111110000001100100111000001111010000011101011101110110110111010100011100000110001111111101001000110100010111010010110111000101011100101111010010101110011000110010000110110101101111101011100001000000001100101110001000010000011110010011001001110001001100110101110000011001001011011011010111000101000001100111001111010001001101000010100011111110100111100010 0110100101100101110010011010110000011101000100011001000000111010010101101000010101101011110100010100010101011011011010011101101001011100010100101011110001111011010111000011001001000101100101000000101010000110101111111000111111001101111101100000011011100100111001100101000100110000111111101000110111111001100011100011110100101110001010000001011100011001101010011110010110110011011101011000110010110011 0100000100011100001010100110100011111111001000010011010110001010100000111110111101010001000111101100000101000001110111101101011111011110011110000111111011011001011001011110011110000110010111000111111101011011100100100100111110010000010011110101011111111101000111010011110011000111111001000100011001101001000000001001011100001011101111101110111111100000001110011111110110111001100110100111010001111100 1110111010101111111110000111000111110111001000111100100000010111000110011011010000011001011001001111001100101111110011110111011011100111010011010000011111111011111010001000100101111000101000101010111010010111100000110001001100111000111111000111010110011101100011011001111010011011000110010101101110011110110110010011101011101000011100011010111010001000101000001111010000010001100110001110011011110001 1001011111011000011010100111111100000010111100101010100100111111011000100111110001100000001010111111100100110111110010111000001111101001000101100100000101011010000110010101000111100010001111101010111001011011100110111100101011011100010111000000101110100111110101111100011000010101101011010010101000000010100010111000011011111011010011010000111110110000100011001011011101010000101000010101101110101100 0010111101000001101110010010110101000011001001110110101011000110010101110001000101010110110101011100000110010111000010010110100100001011110101111101010100101100000011010101011100001000000100000111001011011101101100110000111010010000001000101100101010111101000011010110001100000100010101111100010111001010011100011011100011010110101110001001101000110100111000010001011110001111111111101000001011101010 0100101001000011001101000000100111000000011001110001100100010010101101011110110001110000000101100111010001001011011000101001111110110011101110000101000111101010110110000001011000001100111011101001111001000001111001000011001111110000111010101101111110101000001111011011111010010100101000010111110110010110100000010110101001101100000100111011010111101100000001011100010100100111111011111111101000001001 0001011000100110001110100001001101010110101010001101010010110001011100100110011001101001100001100101100001111110001000100101101100011000010110111110111100000110100111100000110001110011000100110010111110010100010101010011100110000010110110010101001100110110110111011010011001100001011011011001000001011111011100001110111110001110000011100111000101001101000100010000100000111011000011001111010101101000 1010010000010100101011001110101001001111110000110011001100011100110111010000010101110101011000001101000000111100111101011011101000000101110100000010100010000100011101011010001111010001000101000111100101010110111100010110011110100111000111000100100010100011000110010000000101100100110111101101000011001100000010111000010100001010001010001111010101101110110110000100100011101001111101000001000011000010 1110101011101111000010001010010000100000111000010011010111001101111000011001111100000110111110011010100001111010011000000100101000101110010101001100111001001101000001100010111110100000000100001111101001010000111100000001011011001010111100010100101010101100011101101110110000000011010011111001110111100001001001101110100110001000001110001100000111100000101000000110101101010000110001101011011100010101 1101111001110111110011110001110000011010011001000010001011001001111011111010110110110100110111100011111001000010011011101010101000011001010110000001111100100011111001100000011010100000100000010010101010101010110101100000000100010011110101100011011101001111011100111011001101100111010111111011110010010110010110111011000100100101100111010101011100001101101000111110011100100100001000101011010110111010 1110000010000011001100111101001000010101111001010000000000110010110111001010111101110100101111000111100000111100100111001101101100111001001011100001111011100110011101011100011110001001101101110111111101011111110011000111000011011110010000000011001101001011001011000000011101011000110001100101001011010111010110111001000001110010001101110000010011110111011010011000100011011100100011010100001111111001 1101100111111101110100000010101001001001101001101101011011000011001000011100001110111001100111100111101000100000111010011011011010001000011100001101111001011000100011111001111011100000001011100111000000110111101110000111001111000100010001110010110100010100110111000101101010011001100001100001110100101111111001100101110000111000000011111110011110101111001101010000111010001010000100011010011000110101 0010111001100111011101001111100110110101011110100010101110000000010001000001100001111001100000011101100011101010011100100010011101000010001010001001001101110000010110110001001110100101000001011110101000110001010111101001110110000101011000001100001011011111111001000010111110110010110101000110011100101001011010111101100000100011100101010000011111110001001001001011001000110000010100110101000101010010 1100101110010000111100000000011100001101000100001110101010101111111101110010111100000000010010100110000010100101011100110101101100110100011010000000110110001011101001111001110001010011101100110111111000000100010000101110000000011001111101011100000101111001000011000000100101010000011001111001110110110011101111011111001001010001000111001100000010011110011110001100011100110101111011111111001110101011 1111110101101000000011101110010101101000111010000010011000011001010010010010100000001000010001111101011111111000001001011100100001010111011000101110111000001011111110001011000111100001100001110110010000000100011001010110010011010010011101111111000011111111011010011101010011110000001010100001011011111010010111101101110001101101110100110011001001000100111010000011101111101010000001111110011000010110 1100010110111000110010001111111110011101000100010110100100000010111001111000001010101010101010000000001111000110110011001011011010101111000001000000010000001111101000000101101011001110011010010001101100101010110101111001100110111110100011011011111100111000000101111000111000110100111001100100001100111001110101100101011010101011010000111000110011101111111101111110000110011010110100000100100111011110 1111111110010101100101110010011100001100100001110101000111101010101010100000111101011001000111110111010000110010100010111110101011101100111101101011100100101010101001001010001100000010110101011000000110011001100111010111100110100011001111010110001001000000011111001011101110010010100010110001101010001010010000011111111101101111101011011001010001000011001010011011100110101001100100011000011001001001 0000010100011010010111101100000101101111100111011001000100100000011011000010010010111011000111110000000111000000000110010011001010011001110100001111010111000110011110011100001011100110111101010000111111010111111001100110010101000110101011011001001011101100100101111111001100111011010111111100001011101010101010001110000110000100100100000111000110111100111101110010000000010001110110110100010100011100 1010101001111010100101110010001011111101010110100110111010100111011011001101011011011110000100001100100110111100101101110000111010011110001010110011110010011110110001101001010010101011110000001000010001100000000110011111000100110000000100000101101001011111001010000010110001110111011011000100110100011100011001111000100101001100110001000010001101011011101001101110111110111101100010111111100101111110 1100111101010100001110100101110010010000110000110111010011101000111010001111000011110011010011011100100010110010110111001111010010000100011110001101010111100011011101101001100111010010111110010010001001010111110100100100011111111001100001110011100111010011110011001010111101110010010000111000000010001101100101101110010110000011100000100011101100000101101111011000000110111100010100101101101000110010 0110000101000100110101101011001101011011011000100100111111001001100000000001000111110111111010111000111011110110000010101000100110100000000011110100110001101011100100001101110010100011001010001111000101001001001100010110001000000111010101010110000111010101111011001101101001111001000100100001111000000011100000011011011001111000100110000011001111001110001100011100111100010100011110000010110010111000 0101111100100001000111101011011011011001100100111000100100111000000010010011000101010101101011011010100000001101010011010111001001000001110111010000010101100110101101101001001011011001000110110010101001111111100100010000001110001101001001001110001010110111011100101011101101110100111101111011111011100001100101010100011110000001011101010101010011110111011011010111000101011010100110100001001110000010 0111100001010110000110001000110001010011000010111110011110010111000010011011101101011010111111111111100001001010110001101100100100011011000100110010001100011100000101011010001110001100111000000111000110111110111001101000110100100010111001001001011100010100000111011000100100000111010111100010111001010110110100100100001110011110100010000100101010111010011011111000101001100000100101001000100000101011 1100011111110111101000010011110001001111011101010110011011010101001110101101001110101111001001100100001010000010111110101100011100010101000110010110111011001011111101110101001011100011011100000110010010111001011000001010101100011011111001000100000001110100001000101011110011110011110000110101011000010011000111000101001010111100101100011100110100001110100100001100111101000001000110010011000100100101 1111011010101111111011111101101000110011101001010001010101001011101001011010111101111100100100101000000011010010000100001100010001001100001101110111001010001001110010111011100111010010111010101100011000010111110011010001111101010000001110001000100101010011010011011001111000010010100100011111000101100111101100010001101110011111010010000101010111010000010011001011011000001100011111000011100110101011 0100001101000011011010011101100001010000010000110001010111010101110000100000111101110101101010111110111111101010011101111101111000011010011101011100110000000110110001001110001010101010001100110100110110000111000110010011101010000001111110011101010101001110101011100001000111001011000001100110011110011111110100001101011000110011011000110100111111011011001111001110001011101000111011000000100000010110 1011011100110110000000101100111011110111010000110101101001101110100100111111001101101010110011110111100011011111100110101111100011011110010001110110110110111010110111011001000011000101011100001100000111111011010110111000000100000011110011101101000101010001011000000010001010001010101100011111001100101011001110101101111100111010000001000111100101001000011100101010110000101101000110001000010010110000 1000011111011100111010000101110100100001011011111011110101010101011010101001001000111001001100000000100111110111111100111111100110000111000101100000011100011010100111011110100110010011101101101110110110111111001001101000100111000010010010100111000101110110100011111101110001100000000101110100001000000011000101010000100010001001100011100110111111111111111000001000110100100011101011111000001110111101 0100100000111010101100101011110111001011111001100010000100011001000111110110010110101111011011101110110101001000110101000000111110101000101000010101000010110100010000110100001100101111001100000001001101110100010001001000010001110011011001100000010011110001111000110100011001110000010010011010111000001000011010011100110001111110111111000011111100101110001110001010101010111100111111110011001101101010 0011001101011100111000100010000100101000111010000110101010100011010110101000010101001110010100111100100010101100010000010101011011110011111110010100010011110110101100000110011000000010011010001111011111001001000000100000101110011010100011000111000001111100101110111010110010010010010110000101001000001001010001010110101011001011111001100100110010011010000101110001101100010100010001011100110011110110 1011010100011100001000000001110110111001100110110011110111001001001110100110010000111011000000001110010110100110000101000110110110101011010010110000110110001110001000110010001010001011110000100111110010100110011011010110010111111011000100001011011010100101011010100111110010010000100010100100101101111100011001000110011010100110101010111111010011011111101010111110011101100111010010100001110011000111 1110101001111101110100011110110011111000101101110001011011010111011000010100010111111101000100110101100100111001110001111101111101000001110100001000101101110000000000001111101001001011100011101111110001101101101100111101001011011011100100010111100011001000000001110110011000110011011111010110010111000100110010001000001000001011010010001110110101001011000101001110111010011011011001101110011001101001 1010111101000101011100110010011100101111010001000011001011110100000100111111000110000111011000110111101010100111110111111000101110001110101111110100011110011011110110011011111110100000101011010100110001011100110001001101110100001100110100110110000010110011111111100011100100001000001010101010011000000011000100011111010001101110101101100100101010001000100100010011110010011000110101110001111011001010 1101000001011111110000001101110000011100000111000000111001010111100011001010111010001100110101110111011100011111111111101011000110011101011011110111010010011111100000011100001010001110110010010101111101111110100100101101111000010001111101100000000000111111011001110101111011100111100001111100110010100010111110001101101000101010110101010100001101111110011110100001000110100101010100101111100101010000 0011010111001010000101000111101101100000001001001111011100001111011001011100001111110010001110010001001110000010011001011010101010101011101100101111010110100110100001010011111000011011111001110010001100000100010001010000011110001101000011111000001111100110111010010101001101111101010000110001001111001110100001111111011010001000110001000001010001111010111010100011011010001001010000000000111110010011 1101010010111010111100000111000001000100011101010001100011011001101100101110000011010111111010001010010010001011110110001010000101011000011101100000111111011101101011101010010110001001010110110010100100010110001001111011000000000011101101010100001101011101100100001000001110110100100000010101110101010100110010010101110010110100111010111000001100000000001111101010000110110000111000001001000100010000 1010001000110100001011010000110101111110000001101001000100100110011100111110010000101111000110000000011111000010101110011011110110111000100111001001001000110001101011101101111101010011111110111100000110000101110110111000000111001111001101000011001101110011110110110001000110011111101000101101101000011110101100000101011101010001100100011011011111110111110110011011010010011010011100010011000011111001 0111101000100110101010100100110100010011010111000110001101011001001000000011111011010000110001110111000001000110101010001011011100000010110000110111111000110011011001111111110001111110110111000001100001111111110111100011010010000111010101010110100111100101011100101010001101000010111000011000011000110111100111111010001111101001110111000100010111000011110100001101010101001111011101000111111011011101 1011010010100000111001000101111110011111101001100000010101110100110011101001110001001001010110110101110001001001101110111111110010110101110100000110010011001110001111011110001111001001110010111110011010011111010101011110001111000110111100100101001101101101100111100001010100010000011010001101000011110111111001001100011000111100001011111000101001001100111110101101110101011000010100101100110100111110 0010111011011110010010011001001001010111110001111111111100010101100111011111010101101010000100011011101110010010110110010101010101111111101101010000011011101001011001010001001100000101110011111100000001001100100110001000110111010011100011111100101001001110110111101110011010001111010010110100010011100110111011011000101010001110101110100001101000010011011101111001010110001010101110010111000110011100 0101011001110011001001001001010011001010110101101100011001000000001001111101001011000010110001001111010010101011111001010110111101111001011011100011000011111110010101000111101010110111011010001010011000110001101011100011100011000110011001100101010001101111011010101000000001010111101100011110011000001010011101100111011100000111101011110100001101111001110011110110001110010111001001100000110111110001 0111011111110000000110000100101111010110110011011001010100001111010010010000001001001000010101101011110011110111011010000110101111111001101001100110001110100001000001111111100100010011101101101110100100101000100011011011111110001010101101100001010111000100110000011010100001000111001001100101010001001110011111100111001000011100100110110110100011110010111010111100111110110110110110111101011001000100 0110010001111111011111010011011001111110010111111110110100000110010011100001101111001111011000011101000011011110101110010110011001000110000011010001011111100000010100110011010111111110001110110011001001101100100110110111101111000100001110001101101010111000100100011010000000111100001111000001101110100010101111110010000010100000001011110011011000100000111010111011100011011011111010001001010100000000 1000011101101001100100110000011100000001001100011100010111101010111111001001110000011101010001111010110101111011111010010001010010001011011000010010000110011011101110110111100011100000101111110110000111100110101100011110111111011101010100110100111111110111110010010110100001011101111000100110100111011100001010011110000101011111000000000000011000100111101101100110000010010100101101001011110001110000 1010001100010010101011000101010000000011010010011001001100001100000000100100110101110010111110101001001100000001011011010001000110101011100000100111110101111000001011101100101111100010100001101100000001010001000011010101111110001110110111101010100111000000000001010010100001101111111111000110010000110111001111101101110110111101011001111011011010101100001011010101110100010100100101000110110110110110 1110000110010111110111001111011001100100110100000011000010100011000110110101101010010100100111101000111001011101000111100101101110111111111001001110011111110100001000010011011101100101101110100010111100000011000111010110001100111110011001111111101001111011010111000010101011111001011000010011100110000101001011000110100110110010101110111001101100000100101011101101110110011100101010000111010011000110 1100110000011111000010011000101101110100111000001101000000000011101001101010101000000000010100011001111111000111100100111010101000100000001000010110011001011010011011001100100011101001001101000110011000101110010000011110011000001000010001001011010110110010001011010000001010000011100000010101100001000100001010101110010010000111010010101011011000001101100101000111100001011101010011000001010100011001 0010110110000000100100100101010010001001101011000110000100111001000001001111001001011100001000110110000100010101111000111001000110111111110011100110101100010001001000110110111110011010011101100100000001111101110111101001101111100100001100110101001000100110010000110111101100011001111100000000100001001010101001110111100100111101011111000100101111000001001011010001110000011111110010111001111001110100 0111101001011000100001111111011000011010010100001000101100010000010101000101000000011011110001100000011100100101111000001000100000101101010000111110111101011101001100101100010110100000000011001011011100001100101010010101110101001100101111110101010010100011000111110101010101001011011101111000000111001011101010010011100001101011000001101110100011111110000110101101001000010110101010001101111010110001 0101000110010110111100001111010000111111001111111010000110010011001100010001011111000000101000111001110010011110011110111111110001000110100100001101111001001000100100111000010010010011110011110100010011011010010100001100111000010010010110111010110010001010111100000011101100011011110000000000101100110001011001110110001101101010101110010001111011110101011010101110001011000101110010100010110010010100 0001010001000100010101101000101111111011011101010101000001010001110110100010000110001110110011101100010001101010101100011111110000100110011101100101111111010100001001010111000101011110011010000100011010000010000100100010110111100101100110011110010110101101100110010010101110100010110111011100101110001001111011110000001001100011011101001101101111000100111100101000010110000100100001110011101100000010 0111010001000101111100010011100111001000100100100111000100000110011001001000001001100110110001011001101111011010001100001100111010101101111010000101011100001101011110100001011110001101010101011110000010010000000001001101001011011110001000000111010110100010010001001010111111010011100001000100100010111111011110011101111001101010001001100110110011011110110110011101010111111100110101001100110111011010 0100001111110010111110000101000011011010110011000100000110010111000000110010000100010111111110101010000111011000000001111100000001101111101111011101100010011111111010011000111101000100011100010010101000111010001011010100111010011000000001000111001100100101111100111000011100100001001110111001101110000011110111101011010110100010101101001110111010100000111000011100100100101011000100101100100110101101 0001000000100000110110011110000001101011101000001110001000010001001100100111000011001110010011001111101111000000010000011011100000111001001100011101110110111010000110000110100110001010110000001111111111111010100010011001000100010000010100001011100011100000001001100001101101010000001101010100111000101110011010110010011001101001111101111000110010010100111011100011111110001110101011011111010011100110 1000001010100011011110101101001100011100111111111000111111101101010000101011001000001000101011001110001010000100001111101011011110010011000101001110001101111011100001111001001000010101100101110101111001100111101100001110001110111010111010100110011000111101110011111000010110001001010110100101011111000000000011110010101000101110001010110011010000110111101000111010101110110010010001001010010011001100 0011000111101011001101111000001100101000101100011100100001100110101011100111010000111111011001100111111101011001110110000101110011110111110101111000110110100010000010011001100101000001000111010100101111110010110010100110011011000010011100101110000000000001001001100010111010011110100000100001110111111111011011101000011011011100111001011100100001000011000111001000011110010101101000110111000010010110 1100000100100100110001011000100111101101101001110011111110010000010101110100001001110011100001000001011010010011111011110110100100011000111100111111011010001100011111000001010100000010010011110110011001001111011110000010000011010010000100101010010011001101011001011101001101000011010000100100110110100101101011010110100110110000101000010011010101000110100100011100000000001000101000111011110101101000 0100101001000101001111111001101111100110101111110110001000100111001010100001111101011110111010110010011100111001101000101101010000100110100000010110101101000001100101010110010111111100101000011010011001010001010110001111101000111101010001101001100101101001001001010000100000110000110100010010011001100101001011010001011000011101101110101000111001110001100001100011011111011110101110100110010001010111 0011110010101110101101100010000110011111000011010110110111111000000011100111110010011001100001100011110010001110001001100101010111011001011011011111100001011111100010000110010011101101000000110111001100110101011000111001110111111011001101100101000110111000000000010101001101000101001110100000011110110101001111100110010001110011001010111101011011101101101011100111000111010110101100100011101001011001 0110110010110100001100000110101011101000010000101000111111100011101111001101001000111001111101100101011011101110011010110011110101011111001001101110010001000011011110000010011010100100011000000000010100010101110011100100011000010011001101001110100111111101110001101101000011010000100000010000000100100110001010010011010101001101010010001110010011001000110000100110010011001101101000100100000010001101 0111101010101011010011111011010000101100001010111100011111110010010101110110111100100111110011101010100000010001001011100110100111110110110001111100000000100010110110011111110010001110011111011001000110101011111010011101100011101101010111111011011111110001000010100101101011001100100110011011011011010001100110111100101111000110100000100101000011000100101011000110100111101101101011000110000001101100 0011110100111010101011000010000111110011110010100110100111110110010010100110001010101010001001101011100110000110001100100100111101111111101100001110111100101000010010010100101100100011000111010010100110100010110110101000100100110011110011011110010100011111110100000111001110100011001110010000111010001100001111011000111101110111011010011110110001100111010100111011010100010011110111010100011010010001 0010100011010010110101110101001100010111000010101000101100101000100001001001101010011101101000111001011100001000011000101000111100101001110011011001111010111011001010000110110010100010101111010111011011000111100010010101111010110011000111101000011001111100010001100111001011001001100001101011001101011100111100001100111101101010110101111100010001010001110010000111110000101001110110011000011011010110 0011111001011000001001111010000111101010010010000111111000011001101000100010001001011001000111001111111001101010110110110010111110001111110011100111000111001111001000101101001000000011110101111000010101011000101001010001100011001100011101100010001111000100111011000111100111111100000000001100000001011011111001010001101010000010111011110010001011010000011011101111111010011101100000010010110000001111 1100011101000000101011111011000110000100011010110110110100101100001000001000001111110110111111001011100011010110101011001100100100001111110011000110010010000001111011000000001001001000111111110011111001001101010000101000000000110101010110110110000110101101000101101111111001111110111111000100101000011100000100100100110111000111011111110010111001001000100100110001111001010110011100111011110000101111 1110110110110111011101111011000101100001010001101110001010001001111011010000101010000010101101101000101111110010111011001010011101101100001010111111011010100110110011010110111110100111010000111010000101010110101111111011100000101101101001110111011010010110100100011011111101000111011110000011010101000001011110011000100100001111010011101001110101001000100001011101011011110000001100001011101011101001 0010011001111101000000101000101010101001000100111111001001010001110101000000100110000111000001111110100111001100100010011110111010101111000101010001100001110000111101110000011101010011101110000101001001000101101100101011010010110100001111010011100101111110000100100100101101111000011000001001100110101011100001111000011010010011101101000011111011011110110101010001110000011100011011101011001010111101 0100100100100101111111100000111101010010111011010110100111110010111011001110111110011011111100000100100010100010010111010000111011010110010000010010110011001001010001110001111000010110011100101110101010001011101001001000111110110111000110001100110010010011000000001001011100110011001111100011100111100101101010000110100000101100110011100010111010010001000001011100000011010110010100111101110001111110 1001111101100000110101111111010110011110001010100010111000100100001110101011000001110011100110010101111001100111001000011010111011110100111011111100011010111110010010011111000111101010110011101000010100010100101010110011001100110000111100101010001110010001001110110011000101000111001000010001000110000110000010001111100000101111011000111010101111101000000110011000010111000100110110110110111010111100 0011100110000000001010010010101010111001101000011001000101011110000111010000011111000000111010100100110001101100000000011011000101001001011000100110000011001110010101100101011010011111010101001000100101000000110100110001001001111010010011100101111000111101011001101100011000010101011011110110110110001110011110011100110011000111010001011110011110111000110100011010101000111101110001100111010111000001 1110010101000000101000011100111001100101010110010100001000000001000110100001111100111110111111111011000000100110111011011101011110010001000111000001111111001001100110101101010110100111010011011011001000101100010011010100011010111110011110001111111100101010110110011110000111000110111011010111100111110001010111111010100011110011101100000110101110000110110010111100111110000111111000110001010110100000 0011000110011110110011101010001110011110010110000101110110001101001001111010010101010111100100011001010010010110100101101101100100011100011100001111110010010101010110000011110010001000100001011000010011011010000010100000000101010100011011010000101010100000000110111110111101110110111111111111001010100001100011100101001111111010110111010110011001111001001111011110111001100011000011011000110011101000 1101111001101111011000000010010110110010111111100111111100100110101111000010111111110001101101011100000110101010101110001011100101010011110110111100111001000011110111010011110100101000010001110000001110000111111111010011010110101000110110101111001101001101011010011011011000011010111110101111110011000001000101011110111100110010100001100000000111001110001100000110111001000000000001001111000110001010 1110100100101001000111000101001011001001100110110001110100000100100110001111101000110011101000010110100010000000111000010100100001001100001011000000101011000011011110101110101000110110101111101110000100110100000000001111010101000110101111001010011001111001101010000100011111011001001101011100010100010110100010001001011111000010011000101111001110001011110010010001010001111101010110001001001100101100 1001110101111111010111100000110011110000110101101101110011101000011101100000011000000001111011110101011011000001100101000010111101110010101010110111011100011110101110101110110101111100001011011111111110100010000111110101000100101001111111000001000000111001010101011101110010100101100101101000110110001110001011110101000101110001100010000001001010000100111111000000011101010001011000110010010100001000
cTrader Algo

Symbol【cAlgo API】

10/27/2020 1/28/2023

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

通貨ペア情報取得用

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